上一主题下一主题
关键字
主题 : cmake 生成 (动态库、静态库)库文件问题
级别: 北风技术菜鸟

UID: 470404
精华: 0
发帖: 288
威望: 1384 点
学点: 710 点
贡献: 0 点
好评: 0 点
学币: 0 个
注册时间: 2014-06-27
最后登录: 2015-03-29
楼主  发表于: 2015-03-06 18:54||

cmake 生成 (动态库、静态库)库文件问题

我现在想把这个工程编译成一个动态库或者静态库; *}Fo eDe  
我现在的****法是: u4%-e )$X  
1、每个模块都编译成了一个 静态库 (libbase.a、libfile.a、libutil.a); <w[)T `4N  
2、然后在project 目录下创建一个模块 test,里面只有一个test.cpp 文件(内容是空的); 'EXp[*  
3、然后让test模块去连接(libbase.a、libfile.a、libutil.a); 6x_8m^+m  
现在的问题是 test 模块也编译成了test.a 但是没有连接上其他三个库(libbase.a、libfile.a、libutil.a),请问各位怎么能把工程所有的静态库打包成一个?
此帖悬赏结束
最佳答案: 2 学点
最佳答案获得者: dhx840828284
级别: 北风资深评论员


UID: 470398
精华: 0
发帖: 3024
威望: 3862 点
学点: 8642 点
贡献: 90 点
好评: 0 点
学币: 112 个
注册时间: 2014-06-27
最后登录: 2015-04-07
沙发(1楼)  发表于: 2015-03-06 18:55||

cmake 无法在库中链接其它库。 MNi u5-g5  
按你的目的,你只需要在根目录下维护一个 CMakeLists.txt 即可。
最佳答案奖励: (+2) 学点
级别: 北风资深工程师

UID: 472685
精华: 0
发帖: 1930
威望: 1946 点
学点: 3280 点
贡献: 0 点
好评: 0 点
学币: 0 个
注册时间: 2014-07-10
最后登录: 2015-04-08
板凳(2楼)  发表于: 2015-03-06 18:55||

建议在这个SaaS和****源的时代,直接****源代码给客户,而不必费劲去包装各种库给客户。
热心助人奖励: (+1) 学点
级别: 北风资深工程师

UID: 472681
精华: 0
发帖: 1791
威望: 1815 点
学点: 2095 点
贡献: 0 点
好评: 0 点
学币: 0 个
注册时间: 2014-07-10
最后登录: 2015-04-07
地板(3楼)  发表于: 2015-03-06 18:55||

为什么要先把三个模块先编译成.a 文件, 编译成 .o 就很easy了。 /|AuI qW  
pr(\?\a  
yfQE8v+  
假设A.a,  B.a  C.a 在test目录下 MGDv4cFE.  
新建一个目录 ulJYJ+CC!  
mkdir lib krc!BK`V  
cd lib mC(t;{  
|Eu~= J7@  
//这三条命令, 把 .a 文件解压缩到当前文件夹下 _1Gut"!{\  
ar x ../A.a *wcoDQ b;  
ar x ../B.a \;gt&*$-  
ar x ../C.a Z]\^.x9S  
%=y3  
//打包成一个新的 .a #) }bUNc'  
ar cr libABC.a  *.o