方法1:使用auxsourcedirectory命令
aux_source_directory命令用于查找指定目录下的所有源文件,并将文件列表存储到一个变量中。这种方法简单易用,适合于源文件位于单一目录下的情况。
基本语法如下:
aux_source_directory(<dir> <variable>)
- <dir>:指定要搜索的目录。
- <variable>:用于存储搜索到的文件列表的变量。
示例:
cmake_minimum_required(VERSION 3.0)
project(MyProject)
include_directories(${PROJECT_SOURCE_DIR}/include)
# 搜索 src 目录下的所有源文件
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src SRC_LIST)
# 根据搜索到的源文件创建可执行文件
add_executable(app ${SRC_LIST})
方法2:使用file命令的GLOB或GLOB_RECURSE选项
file命令的 GLOB和 GLOB_RECURSE选项提供了更灵活的文件搜索功能。 GLOB选项用于搜索指定模式的文件,而 GLOB_RECURSE选项会递归搜索指定模式的文件。
基本语法如下:
file(GLOB/GLOB_RECURSE <variable> <path-to-search>)
- <variable>:用于存储搜索到的文件列表的变量。
- <path-to-search>:指定搜索路径和文件类型。
示例:
cmake_minimum_required(VERSION 3.0)
project(MyProject)
# 搜索当前目录的src目录下所有的.cpp源文件
file(GLOB MAIN_SRC "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
# 搜索当前目录的include目录下所有的头文件
file(GLOB MAIN_HEAD "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h")
# 根据搜索到的源文件和头文件创建可执行文件
add_executable(app ${MAIN_SRC} ${MAIN_HEAD})