cmake 获取目录中所有文件路径
时间: 2023-11-12 15:05:31 浏览: 51
使用 `file(GLOB_RECURSE)` 命令可以获取目录中所有文件的路径,包括子目录中的文件。
例如,假设要获取 `src` 目录下所有的 `.cpp` 文件路径,可以使用以下命令:
```
file(GLOB_RECURSE SRCS "src/*.cpp")
```
这会将所有 `.cpp` 文件的路径存储在 `SRCS` 变量中。注意,不推荐使用 `file(GLOB)` 命令获取文件路径,因为它不会自动检测新添加或删除的文件,可能导致不可预测的行为。
相关问题
cmake获取文件的绝对路径
可以使用CMake中的`get_filename_component`函数来获取文件的绝对路径。
例如,要获取当前CMakeLists.txt文件的绝对路径,可以使用以下代码:
```
get_filename_component(CMAKE_CURRENT_LIST_DIR_ABSOLUTE "${CMAKE_CURRENT_LIST_DIR}" ABSOLUTE)
```
其中,`CMAKE_CURRENT_LIST_DIR`是当前CMakeLists.txt文件所在的目录,`CMAKE_CURRENT_LIST_DIR_ABSOLUTE`是获取到的绝对路径。
CMake添加指定目录下所有文件
您可以使用CMake的`file()`命令来获取指定目录下的所有文件,然后使用`add_executable()`或`add_library()`命令将它们添加到您的项目中。以下是一个示例:
```cmake
# 获取指定目录下的所有源文件
file(GLOB SOURCES "path/to/directory/*.cpp" "path/to/directory/*.h")
# 将源文件添加到可执行文件中
add_executable(my_executable ${SOURCES})
```
您可以将`path/to/directory`替换为您想要扫描的目录路径,也可以使用通配符`*`来匹配所有文件。请注意,`file()`命令在CMakeLists.txt文件被解析时执行,因此如果您添加或删除了文件,您需要重新运行`cmake`来重新生成项目。