Cmake 库依赖关系的传递
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cmake 库依赖关系的传递相关的知识,希望对你有一定的参考价值。
参考技术A 在linux平台下,按照正常来说,在编译C时,只需要链接B就好了。
但是使用Cmake编译时,会报找不到libA.so的错误。
通过cmake生成的gcc命令看到,编译命令确实将A也链接了进来。
那么问题来了,为什么cmake会将B的依赖加到我C的头上?
原因在于 target_link_libraries() 命令。
熟悉cmake的朋友都知道这是设置链接库的命令。
但其实它的原型是:
可以通过PRIVATE | PUBLIC | INTERFACE 设置依赖的传递性.
摘抄一下官方文档的描述:
其实大白话就是 :
好了,大家以后再使用 target_link_libraries() 的时候就可以加上 PRIVATE 关键字,这样C就不会链接A了。
需要注意 :
根据CMP0023描述:
加关键字和不加关键字的用法不可以混合使用,如下面一起使用就会报错。
以上是关于Cmake 库依赖关系的传递的主要内容,如果未能解决你的问题,请参考以下文章
android 创建Model 解决无法依赖传递问题 , 实现 sdk 依赖关系的传递