On Saturday 06 November 2010 21:55:21 luxInteg wrote: > On Saturday 06 November 2010 17:30:10 Michael Hertling wrote: > > On 11/06/2010 05:26 PM, luxInteg wrote: > > > Greetings, > > > > > > I am learning cmake. > > > > > > I have a question on using add_library. in my project(learnCMAKE). > > > The latter has:- > > > > > > ---a) 2 source files file1.c file2.c > > > ---b) the envar {CFLAGS} set > > > ---c) need to generate libLearnCMAKE.so and libLearnCMAKE.a > > > > ADD_LIBRARY(LearnCMAKE-shared SHARED file1.c file2.c) > > ADD_LIBRARY(LearnCMAKE-static STATIC file1.c file2.c) > > SET_TARGET_PROPERTIES(LearnCMAKE-shared LearnCMAKE-static > > > > PROPERTIES OUTPUT_NAME LearnCMAKE) > > > > > > ---d) need to add preprocessor agruments -DXXX to CFLAGS in the > > > compilation of the source files before liberies are archived like > > > so:- > > > > > > gcc ${CFLAGS} -DDINT /path/to/file1.c > > > gcc ${CFLAGS} -DDINT /path/to/file2.c > > > > > > gcc ${CFLAGS} -DDLONG /path/to/file1.c > > > gcc ${CFLAGS} -DDLONG /path/to/file2.c > > > > SET_TARGET_PROPERTIES(LearnCMAKE-shared LearnCMAKE-static > > > > PROPERTIES COMPILE_DEFINITIONS DINT) > > > > or > > > > SET_SOURCE_FILES_PROPERTIES(/path/to/file1.c /path/to/file2.c > > > > PROPERTIES COMPILE_DEFINITIONS DINT) > > > > or > > > > SET_DIRECTORY_PROPERTIES( > > > > PROPERTIES COMPILE_DEFINITIONS DINT) > > > > or > > > > ADD_DEFINITIONS(-DDINT) > > > > or > > > > SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DDINT") > > thanks a lot. I had the most success with this:- > SET_SOURCE_FILES_PROPERTIES(/path/to/file1.c /path/to/file2.c > PROPERTIES COMPILE_DEFINITIONS DINT) > > > HOWEVER I need to pass the files through the compiler twice once with > _DINT and other with -DDOUBLE before the object files are archived.. > > I tried this: > > SET_SOURCE_FILES_PROPERTIES(/path/to/file1.c /path/to/file2.c > PROPERTIES COMPILE_DEFINITIONS DINT) > SET_SOURCE_FILES_PROPERTIES(/path/to/file1.c /path/to/file2.c > PROPERTIES COMPILE_DEFINITIONS DDOUBLE) > > but only the last one was done. I am wondering if the DINT and DDOUBLE > could be incorporated in a foreach loop? > I tried the following:-
ADD_LIBRARY(LearnCMAKE-shared SHARED file1.c file2.c ) ADD_LIBRARY(LearnCMAKE-static STATIC file1.c file2.c ) SET(var "") FOREACH(var DINT DLONG) SET_SOURCE_FILES_PROPERTIES( file1.c file2.c PROPERTIES COMPILE_DEFINITIONS ${var}) ENDFOREACH(var) SET_TARGET_PROPERTIES(LearnCMAKE-shared LearnCMAKE-static PROPERTIES OUTPUT_NAME LearnCMAKE) but my compile logs only show lines with "-DDLONG -O3 " and one with "-DDINT -O3" and the generated libs are about half the size they should be. advice would be appreciated _______________________________________________ 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