CMake入门教程【核心篇】包含目录(include_directories)

发布时间:2024年01月04日

在这里插入图片描述

😈「CSDN主页」传送门
😈「Bilibil首页」传送门
😈「本专栏容」:CMake入门教程
😈「动动你的小手」点赞👍收藏??评论📝



CMake的 include_directories命令是用于指定头文件搜索路径的重要工具。在编译C++代码时,正确设置包含目录对于确保编译器能够找到所有必要的头文件至关重要。

include_directories 使用
添加单个包含目录
添加多个包含目录
控制搜索顺序
区分系统和用户头文件
使用技巧
include_directories(include)
include_directories(include1 include2)
include_directories(AFTER include1 BEFORE include2)
include_directories(SYSTEM system_include)
避免全局设置
使用target_include_directories
target_include_directories(my_target PRIVATE include)
区分私有和公共包含目录
target_include_directories(my_library PUBLIC include_public)
target_include_directories(my_library PRIVATE include_private)
管理第三方库包含目录
find_package(Boost REQUIRED)
target_include_directories(my_target PRIVATE \${Boost_INCLUDE_DIRS})

1. 基本用法

include_directories命令用于添加包含目录,其基本语法如下:

include_directories([AFTER|BEFORE] [SYSTEM] directory1 [directory2 ...])
  • directory1, directory2, … 是要添加的包含目录。

2. 添加单个包含目录

include_directories(include)
  • 这会将项目目录下的include目录添加到包含路径中。

3. 添加多个包含目录

include_directories(include1 include2)
  • 这会同时将include1include2目录添加到包含路径中。

4. 控制包含目录的搜索顺序

include_directories(AFTER include1 BEFORE include2)
  • 使用AFTERBEFORE关键字可以控制包含目录的搜索顺序。在此例中,include1会在include2之后被搜索。

5. 区分系统头文件和用户头文件

include_directories(SYSTEM system_include)
  • 使用SYSTEM参数可以将特定目录标记为系统头文件目录,这有助于减少编译器对于系统头文件的警告。

6.使用技巧

6.1 避免全局设置

尽可能避免在项目的根CMakeLists.txt中全局设置包含目录,以防止不同目标间的潜在冲突。

6.2 使用target_include_directories

在现代CMake中,推荐使用target_include_directories而不是include_directories

target_include_directories(my_target PRIVATE include)
  • 这将include目录添加到特定目标my_target的私有包含路径。

6.3 区分私有和公共包含目录

对于库目标,使用PRIVATEPUBLIC关键字区分私有和公共包含目录:

target_include_directories(my_library PUBLIC include_public)
target_include_directories(my_library PRIVATE include_private)
  • PUBLIC包含目录会被库的使用者继承,而PRIVATE包含目录仅用于库本身的构建。

6.4 管理第三方库的包含目录

使用find_packagepkg_check_modules来管理第三方库,并使用其提供的包含目录:

find_package(Boost REQUIRED)
target_include_directories(my_target PRIVATE ${Boost_INCLUDE_DIRS})
  • 这样可以确保第三方库的包含目录被正确添加。

通过这些方法,您可以有效地管理和优化CMake项目中的包含目录,确保构建系统的可维护性和可移植性。

文章来源:https://blog.csdn.net/hiwoshixiaoyu/article/details/134864846
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。