cmakelists中使用add_library之后不需要include_directories

在CMakeLists中使用add_library创建动态库时,编译能够成功,无需额外使用include_directories指定头文件路径。当链接器能够找到动态库时,即使不指定link_directories,链接也可以成功。但如果移除add_library,链接会失败,表明add_library可能隐含设置了库的搜索路径。
摘要由CSDN通过智能技术生成

最近在尝试cmakelists中生成动态库的时候

set(${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${ROOT}/lib)
add_library(mytest SHARED dir1/function.cpp)
include_directories(xxxxxx)
add_executable(main pthread mytest)

这样写了之后发现能够成功编译生成main。

但我觉得,照道理我修改了libmytest.so的生成位置,应该需要添加link_directories指令指定动态库的位置才能让链接器找到这个动态库。因此随便试了下把add_library去掉,不放link_directories,果然链接失败了,放了link_directories链接才能成功。

所以我猜add_library了之后这个mytest相当于一个生成好的路径,所以不需要另外指定lib的搜索范围了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值