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

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

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

我现在想把这个工程编译成一个动态库或者静态库; PH%'^YAl7  
我现在的****法是: ^_g%c&H  
1、每个模块都编译成了一个 静态库 (libbase.a、libfile.a、libutil.a); :o8|P  
2、然后在project 目录下创建一个模块 test,里面只有一个test.cpp 文件(内容是空的); |m6rF7Q  
3、然后让test模块去连接(libbase.a、libfile.a、libutil.a); `/`iLso& -  
现在的问题是 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 无法在库中链接其它库。 v)_FiY QQ6  
按你的目的,你只需要在根目录下维护一个 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了。 Iv{}U\ u  
 "d A"N$  
Q} / :  
假设A.a,  B.a  C.a 在test目录下 Z!*Wn`d-k  
新建一个目录 Orz Dr  
mkdir lib ,\Cy'TSz  
cd lib k&9 b&-=fk  
9X!OQxmg  
//这三条命令, 把 .a 文件解压缩到当前文件夹下 Rrsz{a  
ar x ../A.a IuRKj8J)o  
ar x ../B.a dD#A.C,Rz  
ar x ../C.a SV-pS>#  
1 ,Y-_e)  
//打包成一个新的 .a 1;SWfKU?.  
ar cr libABC.a  *.o