Alexander Neundorf schrieb: > On Friday 24 August 2007 15:02, you wrote: >>>> macro(ADD_SUBDIRECTORIES dirlist) >>>> set(prefix " + ") >>>> MESSAGE(STATUS "add_subdirectories: ${ARGN}") >>>> foreach(subdir ${dirlist}) >>>> MESSAGE(STATUS "${prefix}${subdir}") >>>> add_subdirectory(${subdir}) >>>> endforeach(subdir ${dirlist}) >>>> endmacro(ADD_SUBDIRECTORIES) >>>> >>>> using this gets: >>>> >>>> ... >>>> -- Scanning for sub projects in extra: >>>> -- Adding est;boost;threadpool >>>> -- add_subdirectories: boost;threadpool >>>> -- + est >>>> ... >>> The macro has one argument "dirlist" which gets the first argument: est. >>> The remaining arguments go into ARGN. You are iterating over the first >>> argument only. >> Thanks, I changed to: >> >> macro(ADD_SUBDIRECTORIES) >> set(prefix " + ") >> MESSAGE(STATUS "add_subdirectories: ${ARGN}") >> foreach(subdir ${ARGN}) >> MESSAGE(STATUS "${prefix}${subdir}") >> add_subdirectory(${subdir}) >> endforeach(subdir ${ARGN}) >> endmacro(ADD_SUBDIRECTORIES) >> >> and got: >> >> -- Scanning for sub projects in extra: >> -- Adding est;boost;threadpool >> -- add_subdirectories: est;boost;threadpool >> -- + est >> -- + boost >> -- Scanning ... >> >> The last is missing, why? > > > This should work, maybe there is something in the CMakeCache.txt or some file > not saved or ...
macro(ADD_SUBDIRECTORIES) set(prefix " + ") MESSAGE(STATUS "add_subdirectories: ${ARGN}") foreach(subdir ${ARGN}) MESSAGE(STATUS "${prefix}${subdir}") add_subdirectory(${subdir}) endforeach(subdir ${ARGN}) endmacro(ADD_SUBDIRECTORIES) gets for: $ find . -name CMakeLists.txt|sort ./CMakeLists.txt ./extra/boost/CMakeLists.txt ./extra/boost/libs/asio/CMakeLists.txt ./extra/boost/libs/CMakeLists.txt ./extra/boost/libs/md5/CMakeLists.txt ./extra/boost/libs/md5/src/CMakeLists.txt ./extra/boost/libs/system/CMakeLists.txt ./extra/boost/libs/system/src/CMakeLists.txt ./extra/CMakeLists.txt ./extra/est/CMakeLists.txt ./extra/threadpool/CMakeLists.txt ./src/CMakeLists.txt ./src/downloader/CMakeLists.txt ./src/libs/CMakeLists.txt ./src/libs/inet_io/CMakeLists.txt ./src/libs/inet_io/src/CMakeLists.txt ./src/settings/CMakeLists.txt where the following files contains the macro add_subdirectories() $ find . -name CMakeLists.txt -exec egrep --with-filename add_subdirectories {} \; ./src/libs/CMakeLists.txt:add_subdirectories(${SUBLIBS_DIRS}) ./src/CMakeLists.txt:add_subdirectories(${SUBPROJECT_DIRS}) ./extra/boost/libs/CMakeLists.txt:add_subdirectories(${BOOST_SUBPROJECT_DIRS}) ./extra/CMakeLists.txt:add_subdirectories(${EXTRA_PROJECT_DIRS}) and inside build dir: $ rm -rf * && cmake .. ... -- Scanning for sub projects in extra: -- add_subdirectories: est;boost;threadpool -- + est -- + boost -- Scanning for sub projects in extra/boost/libs: -- add_subdirectories: md5;asio;system -- + md5 -- + asio -- + system -- + threadpool -- Scanning for sub projects in src: -- add_subdirectories: libs;downloader;settings -- + libs -- Scanning for sub projects in src/libs: -- add_subdirectories: inet_io -- + inet_io -- + downloader -- + settings -- Configuring done ... That is confusing, isn't it? Thanks, Olaf _______________________________________________ CMake mailing list CMake@cmake.org http://www.cmake.org/mailman/listinfo/cmake