gpt4 book ai didi

cmake - 如何仅对某些子目录使用cmake GLOB_RECURSE

转载 作者:行者123 更新时间:2023-12-03 10:41:57 33 4
gpt4 key购买 nike

我有一个看起来像这样的源代码布局:

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)

这将按预期方式捕获 .cppTopDir/File/中的所有 Section/文件,而且还捕获 .cpp中的所有 Test/文件。

如何在不添加ENDF6_SRC目录中的.cpp文件的情况下创建Test变量? 我不要 CMakeLists.txtFile/中的 Section/文件。

最佳答案

如果“TopDir /文件”或“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})

顺便说一下,在源代码内部构建的情况下(例如,构建根位于“TopDir”内),在顶级目录中执行 file(GLOB_RECURSE ...)可能也会从构建文件夹中提取不需要的cpp文件。

关于cmake - 如何仅对某些子目录使用cmake GLOB_RECURSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27992346/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com