我有一个项目有以下结构。
aaa和bbb是2个子目录,编译成静态库。在一个级别(文件夹)上还有另一个项目ccc,它也被编译成静态库和libccc.a,这是我想要得到的最后一个静态库。在libccc.a中,我希望它包括ccc项目和aaa+bbb。
我试图更改ccc的cmakelist.txt中的链接标志,但似乎不起作用。我想我用错了旗子。
我最初的ccc cmakelist.txt如下:
添加子目录(AAA)
添加子目录(BBB)
设置(源cccsrc1.cpp cccsrc2.cpp)
包含目录(${incdir})
添加库(CCC静态源)
目标链接库(CCC AAA BBB)
那么,有谁知道如何更改cmake文件,告诉ccc生成静态库,其中也包括所有aaa和bbb代码。

最佳答案

使用object library

cmake_minimum_required(VERSION 3.2)
project(masterlib)

file(WRITE lib1.c "int lib1_f() {return 555;}")
file(WRITE lib2.c "int lib2_f() {return 555;}")

add_library(lib1 OBJECT lib1.c)
add_library(lib2 OBJECT lib2.c)

add_library(masterlib STATIC $<TARGET_OBJECTS:lib1> $<TARGET_OBJECTS:lib2>)

关于linux - CMAKE根据其他静态库生成静态库并将它们打包在一起,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46944852/

10-11 19:07