<div dir="ltr"><div>Changes committed to <a href="https://github.com/TNick/ccan/tree/cmake">https://github.com/TNick/ccan/tree/cmake</a> now allow building the project with cmake. <br></div><div>I had to rename time.h into time_ccan.h because the wrong file was picked by the compiler.<br>
Sadly, the make build system is now broken because of my change from<br><br>    #include "config.h"<br><br></div>to <br><br>    #include <ccan/time/config.h><br><br><div>Also, it appears that I wrongfully assumed in previous mail that config.h file is expected in module directory. I can see now that it is being build in root directory. I would argue that a <a href="http://config.h.in">config.h.in</a> in each module directory would make it clear what definitions affect current module. Just a random thought.<br>
<br></div><div>Regards,<br></div><div>Nicu<br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-03-07 23:43 GMT+02:00 Nicu Tofan <span dir="ltr"><<a href="mailto:nicu.tofan@gmail.com" target="_blank">nicu.tofan@gmail.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div><div><div><div><div>Hello!<br><br></div>I would like to know your thoughts on adding a CMake build system as the one in my fork here:<br>
<a href="https://github.com/TNick/ccan" target="_blank">https://github.com/TNick/ccan</a><br>
</div>(Note: at least on my machine code does not compile without hacks, probably because of include paths; it is meant as an example for now)<br><br></div>This would make including ccan in a CMake driven project trivial. Here's how I imagine it:<br>

<br></div></div>mkdir ~/test_ccan<br>cd ~/test_ccan<br></div>git init<br></div>touch CMakeLists.txt<br></div>git submodule add git@github.com:rustyrussell/ccan.git ccan<br><br></div>Now in CmakeLists.txt:<br><br>set( PROJECT_NAME ccan_test )<br>

project(${PROJECT_NAME})<br>add_subdirectory( "ccan" )<br>add_executable( ${PROJECT_NAME} main.c)<br>target_link_libraries( ${PROJECT_NAME}<br>    ccan_time<br>    ccan_cpuid<br>    ccan_antithread<br>)<br>add_dependencies ( ${PROJECT_NAME}<br>

    ccan_alignof<br>)<br><br></div>The system only builds only those modules that are actually needed. There are, of course, many things to add (libccan, examples, tests, the junk code, definitions in <a href="http://config.h.in" target="_blank">config.h.in</a>).<br>

<div><div><br></div><div>One important issue is that many (all?) modules require a config.h file in source directory to be created. The cmake build system will throw it in build directory. When including a header that requires config.h, the compiler will pick the header from current target.<br>

<br></div><div>The question is, basically, if you are interested in adding this and further enhancements to main repo or I should keep it as a fork.<br></div><div><br></div><div>On a different note, I couldn’t find a one page index of all modules (probably because of a lack of skill) so I've created one: <a href="http://tnick.github.io/overview/2014/03/05/ccan.html" target="_blank">http://tnick.github.io/overview/2014/03/05/ccan.html</a><br>

<br></div><div>Have a great day!<span class="HOEnZb"><font color="#888888"><br></font></span></div><span class="HOEnZb"><font color="#888888"><div>Nicu<br></div></font></span></div></div>
</blockquote></div><br></div>