Thanks for those suggestions, I was on that path, but I can not get it to work properly:
foo$ cmake . -- Configuring done -- Generating done -- Build files have been written to: /home/bart/foo foo$ make Scanning dependencies of target foo make[2]: *** No rule to make target ` /home/bart/foo/foo_int.c', needed by `CMakeFiles/foo.dir/_/home/bart/foo/foo_int.c.o'. Stop. make[1]: *** [CMakeFiles/foo.dir/all] Error 2 make: *** [all] Error 2 foo$ ls foo_int.c foo_int.c foo$ --------------------------- File: CMakeLists.txt --------------------------- PROJECT(foo) # There will be more than one source file.. SET(LIBSOURCES foo) foreach(libsrc ${LIBSOURCES}) set(DST_I "${CMAKE_CURRENT_SOURCE_DIR}/${libsrc}_int.c") set(DST_L "${CMAKE_CURRENT_SOURCE_DIR}/${libsrc}_long.c") set(SRC "${CMAKE_CURRENT_SOURCE_DIR}/${libsrc}.c") CONFIGURE_FILE(${SRC} ${DST_I} COPYONLY) CONFIGURE_FILE(${SRC} ${DST_L} COPYONLY) SET(LIBSOURCES_I "${LIBSOURCES_I} ${DST_I}") SET(LIBSOURCES_L "${LIBSOURCES_L} ${DST_L}") endforeach(libsrc) SET_SOURCE_FILES_PROPERTIES({LIBSOURCES_I} PROPERTIES COMPILE_FLAGS "-DDINT") SET_SOURCE_FILES_PROPERTIES({LIBSOURCES_L} PROPERTIES COMPILE_FLAGS "-DDLONG") SET_SOURCE_FILES_PROPERTIES(${LIBSOURCES_I} PROPERTIES GENERATED true) SET_SOURCE_FILES_PROPERTIES(${LIBSOURCES_L} PROPERTIES GENERATED true) ADD_LIBRARY( foo ${LIBSOURCES_I} ${LIBSOURCES_L}) If I remove the generated property lines, cmake can not find the generated source files, either way there is a problem with the dependencies as generated from my CMakeList. Thanks for the help. On Dec 29, 2009, at 12:52, Michael Wild wrote: > > On 29. Dec, 2009, at 21:44 , Eric Noulard wrote: > >> 2009/12/29 Richard Wackerbarth <rich...@nfsnet.org>: >>> Not as a "real" solution, but more as a "workaround", you could create a >>> "derived source file" which is just a copy of the source file and then you >>> would have two separate files to be compiled with the appropriate flags. >> >> That's one solution, see below for more information. >> >>> On Dec 29, 2009, at 2:22 PM, Bart wrote: >>> >>>> Hi, >>>> >>>> I'm trying to find a way to build a library with two different instances >>>> of the same source file. >>>> for example I would like to compile foo.c with -DDINT into foo_int.o and >>>> with -DDLONG into foo_long.o >>>> and have both objects added to the same library libfoo.a >>>> >>>> I have experimented with custom command to generate the source files >>>> (which did not work), and would have still >>>> left me with how to compile them with different -D flags. >> >> Same kind of question has been asked on the ML recently, >> may be you can re-read the thread >> http://www.cmake.org/pipermail/cmake/2009-December/033813.html >> > > Or you can use CONFIGURE_FILE to create "wrappers" which #include the actual > source file. If it's always the same flags, you can do it statically, using > something like this: > > wrap_foo.c: > /* -------------------------- */ > /* clean up */ > #ifdef DINT > #undef DINT > #endif > #ifdef DLONG > #undef DLONG > #endif > > /* compile for int */ > #define DINT > #include "foo.c" > #undef DINT > > /* compile for long */ > #define DLONG > #include "foo.c" > #endif > /* -------------------------- */ > > Michael > > _______________________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Please keep messages on-topic and check the CMake FAQ at: > http://www.cmake.org/Wiki/CMake_FAQ > > Follow this link to subscribe/unsubscribe: > http://www.cmake.org/mailman/listinfo/cmake >
_______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake