gpt4 book ai didi

linux - CMAKE基于其他静态库生成静态库并打包在一起

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:45:33 48 4
gpt4 key购买 nike

我有一个项目具有以下结构。aaa 和 bbb 是 2 个子目录,被编译成静态库。向上一层(文件夹)还有另一个项目 ccc,它也被编译到静态库中,而 libccc.a 是我想要获得的最终静态库。在 libccc.a 中,我希望它包含项目 ccc 和 aaa + bbb。我试图更改 ccc 的 CMakelist.txt 中的链接标志,但似乎不起作用。我想我使用了错误的标志。

我原来的 ccc cmakelist.txt 是这样的:

添加子目录(aaa)

添加子目录(bbb)

设置( sources cccsrc1.cpp cccsrc2.cpp)

包含目录(${incdir})

添加库(ccc 静态源)

target_link_library( 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/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com