关于linux编译链接库问题

来源:互联网 发布:手机超市软件 编辑:程序博客网 时间:2024/06/14 22:13

具体的需求是利用第三方的库,自己生成一个自己的库,在自己的N个产品项目中都可以使用这个库。也就是

third.lib, third.h   -> common.lib   -> app.exe


本文是记录一些实际操作,并不能得出什么结论,反而会抛出一些问题(楼楼菜鸟一个)。


1.利用第三方库编译自己的库,有两种情况:

   a. cmake中 包含所有的与自己库相关的cpp/hpp 文件时;

   b.cmake中只包含第一个cpp文件;

  这两种情况都能编译出自己的库,区别是:

 在编译自己的app时,需要链接自己的库,链接a情况下的库,需要包含所有的头文件,并且在链接 third.a  common.a时,要注意

越基础的库越放后,因为third.a是common.a的基础,所以 target_link_libraries(test ${PROJECT_SOURCE_DIR}/common.a ${PROJECT_SOURCE_DIR}/third.a)


在b情况下去链接自己的库,即使包含了所有的头文件,也编译失败,还需要包含所有的cpp文件,但是这样就失去了生成common库的意义了。


2.其实是想达到这样的效果:其他任何的项目,用到common.a时,只需要有一个头文件即可,而不是把所有跟common相关的头文件都加进来。

还在继续研究中,如果有了解的,请留言解答,谢谢。

0 0
原创粉丝点击