1、搜索文件
如果一个项目中的源文件很多,在编写CMakeLists.txt文件的时候不可能将项目目录的各个文件一一罗列出来,这样麻烦也不现实。所以在CMake中为我们提供了搜索文件的命令,可以使用aux_source_directory
命令或者file
命令
1.1、aux_source_directory命令
在CMake中使用aux_source_directory命令可以查找某个文件夹下的所有源文件,命令格式如下
# aux_source_directory(<dir> <variable>)
# dir:要搜索的目录
# variable:将dir目录搜索结果的源文件列表存储到该变量中
cmake_minimum_required(VERSION 3.10.2)
# 指定标准
set(CMAKE_CXX_STANDARD 14)
# 指定源文件列表
aux_source_directory(${PROJECT_SOURCE_DIR}/src src_list)
# 生成可执行程序
add_executable(main ${src_list})
# 生成目标路径, 在当前目录下bin文件夹下
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
aux_source_directory(${PROJECT_SOURCE_DIR}/src src_list)
:搜索当前项目根目录下src文件夹下的所有源文件,搜索结果存储到src_list
变量中add_executable(main ${src_list})
:生成可执行程序main,依赖src_list
源代码set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
:可执行程序放到当前项目根目录下的bin目录下
1.2、file命令
-
刚才的命令是直接搜索某个目录下的所有源代码文件
-
而file命令可以搜索目录下指定类型的文件
cmake_minimum_required(VERSION 3.10.2)
# 指定头文件目录
include_directories(${PROJECT_SOURCE_DIR}/inc)
# 指定标准
set(CMAKE_CXX_STANDARD 14)
# 搜索CMakeLists.txt所在目录下src文件夹下的所有*.cpp文件,结果存储到src_list中
file(GLOB src_list ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
# file(GLOB src_list "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
# 生成可执行程序
add_executable(main ${src_list})
# 生成目标路径, 在当前目录下bin文件夹下
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
2、指定头文件目录
-
当头文件和源代码不在一个文件夹下,需要在源代码中引入头文件具体的位置或者指定头文件的路径
# 指定头文件目录 include_directories(${PROJECT_SOURCE_DIR}/inc)
-
include_directories:指定头文件的目录
-
PROJECT_SOURCE_DIR:宏,表示当前项目的根目录
-