cmake中如何获取目录下的所有源文件
时间: 2023-07-31 19:13:25 浏览: 229
在 CMake 中获取目录下的所有源文件可以使用 `aux_source_directory` 命令。该命令的语法如下:
```
aux_source_directory(dir VARIABLE)
```
其中,`dir` 是源文件所在的目录,`VARIABLE` 是一个 CMake 变量名,在执行该命令后,该变量会包含指定目录下的所有源文件列表。
例如,如果要获取当前目录下的所有源文件,可以使用以下命令:
```
aux_source_directory(. SOURCES)
```
执行该命令后,`SOURCES` 变量会包含当前目录下所有的源文件列表。
相关问题
cmake添加多个目录下源文件
在使用CMake添加多个目录下的源文件时,可以使用`add_subdirectory()`函数来添加子目录。
首先,在主目录的`CMakeLists.txt`中使用`add_subdirectory()`函数来添加各个子目录,如下所示:
```
# 添加子目录
add_subdirectory(directory1)
add_subdirectory(directory2)
```
然后,在各个子目录的`CMakeLists.txt`中,可以使用`aux_source_directory()`函数或者手动指定源文件列表来获取所有的源文件,并将它们存储到一个变量中。例如,使用`aux_source_directory()`函数可以将一个目录中的所有源文件添加到一个变量中,如下所示:
```
# 获取目录中的所有源文件
aux_source_directory(src SOURCES)
# 添加源文件到当前目录的可执行文件中
add_executable(executable ${SOURCES})
```
或者,也可以手动指定源文件列表来将每个源文件添加到一个变量中,如下所示:
```
# 手动指定源文件列表
set(SOURCES dir1/file1.cpp dir2/file2.cpp)
# 添加源文件到当前目录的可执行文件中
add_executable(executable ${SOURCES})
```
通过上述步骤,就可以在使用CMake构建项目时,自动添加多个目录下的源文件,并将它们编译成一个可执行文件。
请扮演一个程序员,介绍一下cmake中如何递归获取目录下的所有源文件
在CMake中,你可以使用`aux_source_directory()`命令来递归获取目录下的所有源文件,包括子目录中的源文件。下面是一个例子:
```cmake
# 定义目录路径
set(directory "/path/to/directory")
# 使用aux_source_directory()命令获取目录下的所有源文件
aux_source_directory(${directory} sources)
# 遍历源文件列表并打印它们
foreach(source ${sources})
message("源文件: ${source}")
endforeach()
```
以上代码将`directory`变量设置为包含源文件的目录的路径。然后使用`aux_source_directory()`命令递归获取目录及其子目录中的所有源文件,并将它们存储在`sources`变量中。该命令返回源文件名列表,我们使用`foreach`循环遍历它,并使用`message()`命令打印出来。
阅读全文