include_directories
是 CMake 中的一个命令,用于向编译器添加头文件搜索路径。当你的项目中包含的头文件不在编译器默认搜索的路径中时,你就需要使用这个命令来指明额外的头文件位置。
基本语法
include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...]) |
AFTER
或BEFORE
:可选参数,用来指定添加的路径应该放在其他已包括路径的前面还是后面。如果不指定,默认是AFTER
。SYSTEM
:可选参数,标记添加的路径为系统包含路径,这主要影响警告的处理方式。通常,编译器不会对系统头文件中的警告进行报告。dir1 [dir2 ...]
:要添加的头文件搜索路径列表。
使用实例
实例 1:添加单个路径
include_directories(/path/to/my/headers) |
这个例子中,/path/to/my/headers
会被添加到编译器的头文件搜索路径中。
实例 2:添加多个路径
include_directories(/path/to/headers1 /another/path/to/headers2) |
这里,两个路径 /path/to/headers1
和 /another/path/to/headers2
都会被添加到编译器的头文件搜索路径中。
实例 3:使用 BEFORE
和 SYSTEM
include_directories(BEFORE SYSTEM /path/to/system/headers) |
在这个例子中,/path/to/system/headers
会被添加到其他已包含路径的前面,并且被标记为系统路径,因此编译器在处理这个路径下的头文件时可能不会报告警告。
实例 4:在项目中使用
假设你有一个项目,其结构如下:
project_root/ | |
│── CMakeLists.txt | |
└── include/ | |
└── my_project/ | |
└── my_header.h |
在 CMakeLists.txt
文件中,你可能需要这样添加头文件路径:
cmake_minimum_required(VERSION 3.10) | |
project(MyProject) | |
# 添加头文件搜索路径 | |
include_directories(${PROJECT_SOURCE_DIR}/include) | |
# 添加其他必要的 CMake 指令,比如 add_executable 或 add_library 等 |
在这个例子中,${PROJECT_SOURCE_DIR}/include
是项目的头文件所在路径,它会被添加到编译器的头文件搜索路径中,使得项目中的源文件能够找到并包含 my_header.h
。
请注意,随着 CMake 的发展,推荐的做法是使用目标特定的包含目录,例如使用 target_include_directories
而不是全局的 include_directories
,因为这可以提供更好的依赖管理和封装性。