cmake(十)Cmake调用外部库

一  相关概念

①  target_link_libraries

官方文档

target_link_libraries  -->指定'目标链接'的'库'

②  include_directories

③  link_directories

1)官网'不推荐'使用'link_directoris',而是'推荐'使用'find_package'和'find_library'寻找'共享库的绝对路径',再'传给'target_link_libraries'使用'

2)'link_directories'必须放在link_libraries'之前'

④  link_libraries

1)link_libraries已经'被废弃了'-->Deprecated

link_libraries无效

⑤  如何调用

二  实践

①  项目初始化

1)新建一个'项目目录',此项目'调'用'上一个'项目创建的'库'

2)创建'源文件(src)子目录'和'外部编译(build)子目录'

3)编写'项目根目录'下的'CMakeLists.txt'文件

②  src编写源码文件

需求: 引用'linear.h'这个头文件,并'调用'了库中的函数'linear_fit()'

备注: std中的':'换成'::'

③  编写src子目录CMakeLists.txt文件

错误1: ${PROJECT_BINARY_DIR}/bin,而不是'${PROJECT_BINARY_DIR/bin}'

错误2: 第一行少个')'

④  第一次测试

⑤  第一次修改

备注: 外部库'不在'当前'项目下'

⑥  第二次测试

⑦  第二修改

修改'错误': '应为'link_libraries(/tmp/install/lib/liblinear.so)

⑧  第三次测试

⑨  修改

⑩  第四次测试

⑪  看下目标链接是不是动态库

⑫  改为添加静态

1)make没问题,'生成的目标'运行也没问题

2)ldd --> '链接'上的也是'静态库'

⑬  继续测试

备注: 这里最好有个'对比','link_directories'在'add_executable'后-->'报错信息'

备注: 测试'没毛病'

⑭  明确指定

测试'1': 明确指定'动态库' -->'so'

测试'2': 明确指定'静态库' -->'a'

备注: link_directories指定'库目录'

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值