[cmake]cmake命令之target_link_directories简介

本文介绍了CMake中的target_link_directories函数,用于在构建目标时添加链接目录,区分公共链接、私有链接和接口链接,以及如何在CMakeLists.txt文件中配置。通过实例展示了如何在目录结构中使用此功能。
摘要由CSDN通过智能技术生成

命令简介

为特定的构建目标添加链接目录,具体的命令格式为:

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

<target>必须是已经通过add_executable()或add_library()等命令创建出来的目标,对于每一个添加的目录,也有可选的范围参数PUBLIC、PRIVATE和INTERFACE,区别是:指定PUBLIC或PRIVATE时,目录会添加到目标的LINK_DIRECTORIES属性中;指定PUBLIC或INTERFACE时,目录会添加到目标的INTERFACE_LINK_DIRECTORIES属性中。和link_directories的主要差别是:

  • link_directories会对当前CMakeLists.txt文件的目标文件生效,并会通过add_subdirectory调用传递到子目录;target_link_directories则针对指定的目标文件生效。

  • target_link_directories对于指定目标添加的目录,INTERFACE和PUBLIC会添加到<target>的INTERFACE_INCLUDE_DIRECTORIES属性,PUBLIC和PRIVATE会添加到<target>的INCLUDE_DIRECTORIES属性中。

默认情况下,会按照追加的方式添加目录,如果指定了参数BEFORE,那么添加的时候会将目录插入到最前面。

示例

目录结构如下:

target_link_directories/
├── CMakeLists.txt
├── lib
│   └── libtest.a
└── main.cpp

CMakeLists.txt文件内容:

cmake_minimum_required(VERSION 3.22)
project(target_link_directories_test)

add_executable(main main.cpp)
target_link_libraries(main test)

target_link_directories(main PRIVATE lib)

执行cmake .make VERBOSE=1以及./main,结果:

$ ./main 
In test: say hello!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被代码搞废的挖掘机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值