I have a fairly complex library with a bunch of small pieces scattered throughout subdirectories.
Each subdirectory has its own CMakeLists.txt. This is nice because the list of .cpp files for each subdirectory is right there in the subdirectory, and because these subdirectories behave just like all the other subdirectories in the system (you can go to them and build them and get something useful dropped into a results directory). What I would like is for each subdirectory to compile its .cpp files into object files and then stop. There is no need for each subdir to generate a library because the object files will later be collected into a single higher-level library. Is there a way to tell CMake to only compile a list of source files and not to link them? I tried setting CMAKE_CXX_LINK_EXECUTABLE, CMAKE_LINKER, and LINKER_LANGUAGE to nothing but the generated Makefiles still happily call g++. Should I give up on this approach and just list all my .cpp files in the CMakeLists for the higher-level. Maybe I could include() stubs from the subdirectories into my higher-level CMakeLists? A related problem: how can I get the path to the object files that are created in my binary directory? We are currently using this, but it's kinda ugly and probably quite fragile: if (WIN32) set (TEST_OBJ_LOC ${${local_project_name}_BINARY_DIR}/${local_project_name}.dir/debug) set (OBJ_EXTENSION ${CMAKE_CXX_OUTPUT_EXTENSION}) else () string(REPLACE "/_build/.." "/" ABS_OBJ_LOC ${${local_project_name}_SRC}) set (TEST_OBJ_LOC ${${local_project_name}_BINARY_DIR}/CMakeFiles/${local_project_name}.dir${ABS_OBJ_LOC}) set (OBJ_EXTENSION .cpp${CMAKE_CXX_OUTPUT_EXTENSION}) endif () thanks, tyler _______________________________________________ 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