cmake命令之add_dependencies

本文详细解释了CMake中的add_dependencies函数如何确保依赖库先于目标文件编译,并通过实例说明了它与target_link_libraries的区别。通过实例演示了在多库项目中如何解决编译时依赖问题。
摘要由CSDN通过智能技术生成

一、介绍

在顶级目标之间添加一个依赖项。

格式

add_dependencies(<target> [<target-dependency>]...)

使顶级<目标>依赖于其他顶级目标,以确保它们在<目标>之前构建。顶级目标是由add_executable()、add_library()或add_custom_target()命令创建的

二、实例

假设我们需要生成一个可执行文件,该文件生成需要链接a.so b.so c.so d.so四个动态库
正常来讲,我们一把只需要以下两条指令即可:

ADD_EXECUTABLE(main main.cpp)
TARGET_LINK_LIBRARIES(main a.so b.so c.so d.so)

但是编译的时候报错,一些符号的定义找不到,而这些符号恰恰就在这几个库中,假设在a.so 和 b.so中,在上述两条指令之间加上一条指令即可编译通过:

ADD_DEPENDENCIES(main a.so b.so)

原因比较简单,生成main需要依赖a.so和b.so中的符号定义,然而a.so和b.so库的生成是在main编译生产之后的,添加这条语句就是提醒编译器需要先生成main的依赖(a.so,b.so),然后再去生成main.
 

参考:

add_dependencies — CMake 3.22.0 Documentation

CMAKE之add_dependencies使用_BeanGuohui的博客-CSDN博客_add_dependencies

用几句话说一说CMake add_dependencies & target_link_libraries的使用区别 - wpcockroach - 博客园

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值