请扮演一个程序员,介绍一下cmake脚本中如何递归获取指定目录下的所有源文件名列表
时间: 2024-02-09 19:07:52 浏览: 40
好的,下面我将以一个程序员的角度,介绍一下 CMake 脚本中如何递归获取指定目录下的所有源文件名列表。
在 CMake 中,可以使用 `aux_source_directory` 命令来获取指定目录下的所有源文件名列表。但是该命令只会获取指定目录下的源文件名列表,而无法递归获取子目录中的源文件名列表。
如果需要递归获取指定目录下的所有源文件名列表,可以使用以下代码片段:
```
# 递归获取指定目录下的所有源文件名列表
function(get_all_source_files dir result)
file(GLOB_RECURSE source_list ${dir}/*.cpp ${dir}/*.c ${dir}/*.cxx ${dir}/*.cc)
set(${result} ${source_list} PARENT_SCOPE)
endfunction()
```
该代码片段定义了一个名为 `get_all_source_files` 的 CMake 函数,该函数接受两个参数:`dir` 表示需要递归获取源文件名列表的目录,`result` 表示获取的源文件名列表。
函数内部通过 `file(GLOB_RECURSE ...)` 命令来递归获取指定目录下的所有源文件名列表。`file(GLOB_RECURSE ...)` 命令会返回一个包含所有匹配的文件名的列表,这里通过使用通配符 `*.cpp`、`*.c`、`*.cxx` 和 `*.cc` 来匹配目录下的所有源文件。
最后,使用 `set` 命令将获取到的源文件名列表存储到 `result` 变量中,并通过 `PARENT_SCOPE` 参数将变量的作用域提升到父级作用域,以便在调用该函数的地方可以使用获取到的源文件名列表。
这样,调用 `get_all_source_files` 函数,并将获取到的源文件名列表传递给 `SOURCES` 变量,即可递归获取指定目录下的所有源文件名列表:
```
set(SOURCES "")
get_all_source_files(${PROJECT_SOURCE_DIR} SOURCES)
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)