Hello,
our project, which is currently using scons is structured like this
ROOT
- SConstruct
- CMakeLists.txt
- src/
- SConscript
- CMAkeLists.txt
- Module1
- somesourcefiles.cpp
- tests/
- testsourcefiles.cpp
- config/
- configsourcefile.cpp
- Module2 (like Module1)
- ...
Right now the SConstruct calls SConscript
sourcesModule1 = [
Glob('Module1/*.cpp'),
Glob('Module2/config/*.cpp')
]
The test files (Boost Test) are compiled to a standalone executable
sourcesTests = [
Glob('*/tests/*.cpp'),
File("testing/main.cpp")
]
We currently have 4 targets. A static and dynamic lib (comprised of all
modules), a binary (comprised of all modules +
main.cpp) and the test binary (all modules, tests and test main.cpp).
I was able to replicate that structure with CMake and it builds fine:
src/CMakeLists.txt:
file(GLOB sourcesAllNoMain
"Module1/*.cpp"
"Module1/config/*.cpp")
file(GLOB sourcesTests
"*/tests/*.cpp")
set (sourcesAllNoMain ${sourcesAllNoMain} PARENT_SCOPE)
set (sourcesTests ${sourcesTests} PARENT_SCOPE)
ROOT/CMakeLists.txt:
add_subdirectory("src")
add_library(solib ${sourcesAllNoMain})
set_target_properties(solib
PROPERTIES OUTPUT_NAME libprecice)
target_link_libraries(solib ${PYTHON_LIBRARIES})
target_link_libraries(solib ${MPI_LIBRARIES})
target_link_libraries(solib ${Boost_LIBRARIES})
target_link_libraries(solib ${petsc})
Now, in the docs I everywhere read not to add the files using GLOB. However, I
have found no definitive guide how to add
project files in a large project with subdirs like that.
How would you do it in cmakeish fashion?
I know this might be a FAQ, but googled for days and found no suitable answer.
Thanks a lot,
Florian
--
Powered by www.kitware.com
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Kitware offers various services to support the CMake community. For more
information on each offering, please visit:
CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake