CMake Day 4 —— 设置头文件路径和链接库

本文介绍了如何在CMake中设置头文件搜索路径和链接库。通过和命令可以添加头文件路径,提供了对全局和特定目标的控制。链接库则使用和指令,同样区分了全局和目标级别的库路径。文中还给出了具体用法和完整示例。
摘要由CSDN通过智能技术生成

源地址:https://azmddy.github.io/article/%E7%BC%96%E8%AF%91%E6%9E%84%E5%BB%BA/cmake-day-4.html

CMake Day 4 —— 设置头文件路径和链接库

设置头文件搜索路径

在项目中我们会经常会调用头文件(自己写的或者第三方库的),我们首先可以通过相对路径的方式去调用,例如#include "../../xxx.h",但这样不灵活,如果被调用的头文件位置发生了变动,那就需要去调用的地方一一更改。在CMake代码中,我们可以通过include_directoriestarget_include_directories命令去包含头文件搜索路径,这样在代码中可以直接调用头文件,而不需要加路径。

语法:

include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])

target_include_directories(<target> [SYSTEM] [BEFORE]
  <INTERFACE|PUBLIC|PRIVATE> [items1...]
  [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])

这里的相对路径将会被解释为相对于当前源目录。

incl

CMake是一个跨平台的自动化构建系统,使用CMakeLists.txt文件来指定如何构建项目的各种设置设置头文件路径是构建过程中的一个常见需求,以下是几种在CMake设置头文件路径的方法: 1. 使用`include_directories()`命令: 这是最常用的方法之一。`include_directories()`命令用于向编译器添加头文件搜索路径。你可以指定绝对路径或相对路径。例如: ```cmake include_directories("/path/to/headers") include_directories("relative/path/to/headers") ``` 这些路径会被添加到编译器的头文件搜索列表中,适用于所有的目标(target)。 2. 使用`target_include_directories()`命令: 如果你希望只对特定的目标(target)添加头文件路径,可以使用`target_include_directories()`。这可以确保头文件路径只对指定的目标有效。例如: ```cmake target_include_directories(my_target PRIVATE "/path/to/headers") ``` 其中`my_target`是你的目标名称,`PRIVATE`表示该头文件路径只对目标本身可见。 3. 使用`link_directories()`命令: `link_directories()`命令用于添加库文件的搜索路径。虽然它不是直接添加头文件路径的命令,但它在链接阶段可能需要头文件路径对应的库文件,因此间接影响头文件的查找。使用方法如下: ```cmake link_directories("/path/to/libs") ``` 4. 使用`target_link_directories()`命令: 类似于`link_directories()`,但`target_link_directories()`可以指定特定的目标(target)链接库的搜索路径。例如: ```cmake target_link_directories(my_target PRIVATE "/path/to/libs") ``` 5. 设置环境变量: 虽然不推荐,但你可以通过设置环境变量`CMAKE_INCLUDE_PATH`和`CMAKE_LIBRARY_PATH`来添加头文件和库文件的路径。这会影响CMake找到头文件和库文件的方式。 请注意,设置头文件路径时,应确保路径的正确性以及根据项目需求选择正确的命令和作用域(如`PRIVATE`, `PUBLIC`, `INTERFACE`)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值