写cmake用例,搜索指定后缀的文件,目录及子目录下的文件
时间: 2023-05-12 20:04:56 浏览: 129
可以使用以下的 CMakeLists.txt 文件来搜索指定后缀的文件:
```
cmake_minimum_required(VERSION 3.10)
project(SearchFiles)
# 设置要搜索的目录
set(SearchDir ${CMAKE_CURRENT_SOURCE_DIR})
# 设置要搜索的后缀
set(SearchSuffix ".txt")
# 定义一个函数来搜索文件
function(SearchFiles dir)
file(GLOB_RECURSE files "${dir}/*${SearchSuffix}")
foreach(file ${files})
message("Found file: ${file}")
endforeach()
endfunction()
# 调用函数来搜索文件
SearchFiles(${SearchDir})
```
这个 CMakeLists.txt 文件会搜索当前目录及其子目录下所有后缀为 ".txt" 的文件,并输出它们的路径。你可以将 SearchDir 和 SearchSuffix 替换成你需要搜索的目录和后缀。
相关问题
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`来重新生成项目。
cmake 指定可执行文件生成目录
在CMake中,你可以使用`CMAKE_RUNTIME_OUTPUT_DIRECTORY`来指定可执行文件的生成目录。在主CMakeLists.txt文件中,你可以添加以下代码来设置可执行文件目录:
```
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY <目录路径>)
```
其中,`<目录路径>`是你想要指定的可执行文件生成目录的路径。\[3\]通过设置`CMAKE_RUNTIME_OUTPUT_DIRECTORY`,你可以将生成的可执行文件放置在指定的目录中。
#### 引用[.reference_title]
- *1* [cmake 生成可执行程序exe并指定安装目录](https://blog.csdn.net/qq_24423085/article/details/100554072)[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^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [cmake设定可执行文件的输出目录](https://blog.csdn.net/ly890700/article/details/72808345)[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^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [cmake(11):将可执行和库文件分别输出到指定目录](https://blog.csdn.net/rangfei/article/details/121909285)[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^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.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)