cmake glob_recurse
时间: 2023-11-08 14:02:05 浏览: 204
在CMake中,`file(GLOB_RECURSE)`是一个用于匹配指定路径下所有符合通配符条件的文件的命令。具体来说,`GLOB_RECURSE`是递归查找目录下的所有文件,`file()`命令可以用来获取文件列表。
例如,如果你想捕获所有以.cpp结尾的文件作为源文件,并将它们存储在`ENDF6_SRC`变量中,可以使用以下命令:
```cmake
file(GLOB_RECURSE ENDF6_SRC ${PROJECT_SOURCE_DIR}/*.cpp)
```
这将在`PROJECT_SOURCE_DIR`目录下递归查找所有以.cpp结尾的文件,并将它们存储在`ENDF6_SRC`变量中。
如果你不想从`Test`目录添加.cpp文件,而且也不想在`File/`或`Section/`中有一个`CMakeLists.txt`文件,你可以按照以下方式进行操作:
```cmake
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})
```
这将首先获取顶级目录中所有以.cpp结尾的文件,然后递归查找`File/`和`Section/`目录下的.cpp文件,并将所有这些文件存储在`ENDF6_SRC`变量中。
顺便说一下,如果在顶级目录中执行`file(GLOB_RECURSE ...)`命令,可能会从构建文件夹中选择不需要的.cpp文件(也就是构建根位于`TopDir`内部的文件)。
阅读全文