【发布时间】:2019-03-09 11:53:26
【问题描述】:
我正在尝试使用 cmake 链接两个静态库,但是当我使用 ar -t 查看库时没有得到预期的结果。
库 A 链接到 B 的小例子:
文件a.c:
void a(){}
文件b.c:
void b(){}
文件CMakeLists.txt:
project(test C)
add_library(a STATIC "a.c")
add_library(b STATIC "b.c")
target_link_libraries(a b)
我希望在输出 ar -t liba.a 中看到两个目标文件,但我只在输出中看到 a.c.o。
【问题讨论】:
-
您之前检查过 CMake 文档以验证您的期望吗?
-
创建 static 库时,实际上并没有执行链接阶段。这不是 CMake 的特定内容,这只是静态库的起源。在您的情况下,对
target_link_libraries(a b)的调用仅影响项目后期对a库的使用。例如。如果可执行文件将链接到a库,它将自动链接到b库。但同样,对应于alibrary 的文件不包含有关blibrary 的信息。 -
@Tsyvarev 我现在可以看到我的问题不是新问题,您是对的,但是您有指向有关您的断言的文档的链接吗?
-
不,我没有文档链接。但是在 Stack Overflow 上有很多关于这个的问题。例如:stackoverflow.com/questions/2157629/… 或 stackoverflow.com/questions/9334257/…。
标签: cmake static-libraries static-linking