file(GLOB_RECURSE
时间: 2024-02-03 19:02:10 浏览: 151
file(GLOB_RECURSE) 是 CMake 中的一个命令,用于查找匹配特定模式的文件并将其添加到一个变量中。其中,GLOB_RECURSE 表示递归地查找文件,即在当前目录及其子目录中查找。使用该命令的一般语法如下:
```
file(GLOB_RECURSE <variable> <globbing-expression>)
```
其中,`<variable>` 表示要存储匹配文件的变量名,`<globbing-expression>` 是一个通配符模式,用于匹配文件名。例如,要查找所有的 C++ 源文件,可以使用以下语句:
```
file(GLOB_RECURSE CPP_SOURCES "*.cpp")
```
该语句会查找当前目录及其子目录中所有扩展名为 ".cpp" 的文件,并将它们存储在变量 CPP_SOURCES 中。需要注意的是,使用 file(GLOB_RECURSE) 命令可能会导致一些问题,例如无法跟踪文件的更改、生成时间等。因此,在实际使用时应该谨慎考虑。
相关问题
file(GLOB_RECURSE msgsrc)
`file(GLOB_RECURSE)`是一个CMake命令,用于获取匹配指定模式的文件列表,并将其保存到一个变量中。
根据您的代码,`msgsrc`是一个变量,通过`file(GLOB_RECURSE msgsrc)`将匹配指定模式的文件列表保存到该变量中。`GLOB_RECURSE`表示递归地搜索目录及其子目录中的文件。
请注意,使用`file(GLOB_RECURSE)`来获取文件列表可能不是最佳实践,因为它在构建过程中的每次运行都会重新扫描文件系统。如果可能的话,最好手动列出文件,以确保构建过程的一致性和可靠性。
cmake glob_recurse
在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`内部的文件)。
阅读全文