我有一个源代码布局,如下所示:
TopDir/
CMakeLists.txt
A.cpp
A.hpp
...
File/
F1.cpp
F1.hpp
...
Section/
S1.cpp
S1.hpp
...
Test/
CMakeLists.txt
TestF1S1.cpp
TestF2S2.cpp
...我希望将所有.cpp文件捕获为源文件(ENDF6_SRC),因此在我的TopDir/CMakeLists.txt文件中,有一行如下所示:
file(GLOB_RECURSE ENDF6_SRC ${PROJECT_SOURCE_DIR} *.cpp)这将像预期的那样捕获TopDir/、File/、Section/中的所有.cpp文件,但也会捕获Test/中的所有.cpp文件。
如何创建我的ENDF6_SRC .cpp 变量而不从 Test 目录中添加文件?--我不希望在File/或Section/中使用CMakeLists.txt文件。
发布于 2015-01-17 00:28:49
如果在"TopDir/File“或”TopDir/区段“中没有子目录,则可以:
file(GLOB ENDF6_SRC
${PROJECT_SOURCE_DIR}/*.cpp
${PROJECT_SOURCE_DIR}/File/*.cpp
${PROJECT_SOURCE_DIR}/Section/*.cpp)如果您有子目录,则需要多个调用:
file(GLOB ENDF6_SRC_TOP
${PROJECT_SOURCE_DIR}/*.cpp)
file(GLOB_RECURSE ENDF6_SRC_NESTED
${PROJECT_SOURCE_DIR}/File/*.cpp
${PROJECT_SOURCE_DIR}/Section/*.cpp)
set(ENDF6_SRC ${ENDF6_SRC_TOP} ${ENDF6_SRC_NESTED})顺便说一句,在顶级目录中执行file(GLOB_RECURSE ...)可能也会从构建文件夹中拾取不需要的cpp文件,对于源代码中的构建(即构建根目录在“TopDir”中)。
发布于 2020-11-27 10:52:21
还可以通过过滤全局列表排除Test:
file(GLOB_RECURSE ENDF6_SRC ${PROJECT_SOURCE_DIR} *.cpp)
list(FILTER ENDF6_SRC EXCLUDE REGEX "${PROJECT_SOURCE_DIR}/Test/.*" )https://stackoverflow.com/questions/27992346
复制相似问题