这使得在编译时编译器能够找到项目中使用的所有头文件。 include_directories命令用于向项目添加头文件搜索路径,这样编译器就可以在这些路径下查找头文件。
下面是 include_directories使用的一个详细示例和解释。
示例说明
假设你的项目结构如下所示:
MyProject/
├── build/
├── CMakeLists.txt
├── include/
│ └── head.h
└── src/
├── add.cpp
├── div.cpp
├── main.cpp
├── mult.cpp
└── sub.cpp
项目包含了几个源文件和一个头文件。源文件位于 src目录下,头文件位于 include目录下。
CMakeLists.txt
为了让编译器能够在编译过程中找到 head.h头文件,需要在 CMakeLists.txt文件中指定头文件的路径。这可以通过 include_directories命令完成。
cmake_minimum_required(VERSION 3.0)
project(CALC)
# 设置C++标准
set(CMAKE_CXX_STANDARD 11)
# 设置可执行文件的输出路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin/)
# 添加头文件搜索路径
include_directories(${PROJECT_SOURCE_DIR}/include)
# 查找当前目录下的所有源文件,并将名称保存到 SRC_LIST 变量
file(GLOB SRC_LIST ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
# 添加一个可执行文件
add_executable(app ${SRC_LIST})
这里, include_directories(${PROJECT_SOURCE_DIR}/include)告诉CMake在编译时添加 include目录到编译器的头文件搜索路径中。 ${PROJECT_SOURCE_DIR}是一个CMake变量,它指向项目的顶级目录,这样无论项目在哪里构建,编译器总是能找到正确的头文件路径。
- include_directories命令将指定的目录添加到编译器用于搜索头文件的路径中。这对于组织较大的项目非常有用,可以将声明和实现分离。
- ${PROJECT_SOURCE_DIR}/include指的是项目根目录下的 include文件夹,这里存放着所有的头文件。当源文件中使用 #include"head.h"时,编译器就会在这个目录下搜索 head.h头文件。
- 通过 include_directories添加的目录将会被添加到编译器的头文件搜索路径中,这意味着在项目的任何地方都可以直接包含这些目录中的头文件,而无需指定相对或绝对路径。