CMake学习笔记6

链接库

1. 链接静态库

1.1 检查是否有动态库、静态库

在这里插入图片描述
可以看到,在L_output文件夹中有已经生成的静态库和动态库。

此时可以在~cmake目录下删除源文件所在的目录。

$ rm src -r

在~/cmake目录下创建两个文件夹lib1和lib2。

$ mkdir lib1 lib2

把静态库拷贝到lib1,把动态库拷贝到lib2。

$ cp ./build/L_output/libcalc_1.a lib1
$ cp ./build/L_output/libcalc_2.a lib2

1.2 修改CMakeLists.txt

如下:

在这里插入图片描述
其中

link_libraries(calc_1)

这一行是链接静态库的命令

link_directories(${CMAKE_CURRENT_SOURCE_DIR}/lib1)

这一行是要链接的静态库所在目录

1.3 运行测试

在这里插入图片描述
可以正常输出,链接静态库成功。

2.链接动态库

2.1 链接规则

动态库的访问权限默认为public。

动态库的链接具有传递性,如果动态库A链接了动态库B,动态库C链接了动态库A,则相当于C也链接了B,由于链接默认为Public权限,则C也可以使用动态库A、B中的方法。

权限:
PUBLIC:在public后面的库会被Link到前面的target中,并且里面的符号也会被导出,提供给第三方使用。
PRIVATE:在private后面的库仅被link到前面的target中,并且终结掉,第三方不能感知你调了啥库。
INTERFACE:在interface后面引入的库不会被链接到前面的target中,只会导出符号。

2.2修改CMakeLists.txt

如下:

在这里插入图片描述
其中要注意target_link_libraries(app calc_2)是链接动态库的命令,应写在最后。link_directories()要写在add_executable()之前。

2.3运行测试

在这里插入图片描述
能够输出正确结果,链接动态库成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值