cmake 怎么遍历目录中的子目录
时间: 2023-11-05 07:01:22 浏览: 38
您好!感谢您使用 ChitGPT 进行对话。答案是使用 `file(GLOB...)`,可以通过以下 CMake 代码实现:
```
file(GLOB subdirectories RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *)
foreach(subdirectory ${subdirectories})
if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${subdirectory})
add_subdirectory(${subdirectory})
endif()
endforeach()
```
希望这可以帮助您,如果您有任何其他问题,请随时询问!
相关问题
cmake 怎么遍历目录下的子目录
要遍历目录下的子目录,可以使用以下代码:
```
file(GLOB_RECURSE sources *.cpp *.h)
foreach(source ${sources})
...
endforeach()
```
其中,`file(GLOB_RECURSE sources *.cpp *.h)` 会将当前目录及其子目录下所有的 `.cpp` 和 `.h` 文件匹配出来,存放在 `sources` 变量中。接着,使用 `foreach` 循环遍历 `sources` 中的每一个文件,执行对应的操作。
注意,这种方法不太推荐在大型项目中使用,因为会导致编译时间很长。如果只想遍历当前目录下的子目录,可以使用 `file(GLOB sources */*.cpp */*.h)` 这样的语句来代替。
cmake 目录遍历
在CMake中,可以使用循环语句来遍历目录。CMake提供了几个命令来实现目录遍历,其中包括`file(GLOB_RECURSE)`和`file(GLOB)`命令。`file(GLOB_RECURSE)`命令可以递归地遍历指定目录及其子目录中的文件,而`file(GLOB)`命令只会遍历指定目录中的文件。这些命令可以将匹配到的文件保存到一个变量中,然后可以在后续的构建过程中使用这些文件。例如,以下代码片段演示了如何使用`file(GLOB_RECURSE)`命令来遍历目录并获取所有的源文件:
```
file(GLOB_RECURSE SOURCE_FILES "${CMAKE_SOURCE_DIR}/src/*.cpp")
```
上述代码将会遍历`src`目录及其子目录中的所有`.cpp`文件,并将结果保存到`SOURCE_FILES`变量中。您可以根据实际需求修改目录和文件的匹配模式。通过这种方式,您可以方便地获取到指定目录中的文件,并在构建过程中使用它们。
#### 引用[.reference_title]
- *1* *2* *3* [CMake中遍历元素的技巧:foreach命令详解](https://blog.csdn.net/qq_21438461/article/details/129734933)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
相关推荐
![](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)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)