首页 > 解决方案 > 用 target_link_libraries 链接 2 个静态库

问题描述

我正在尝试使用 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在输出中看到。

标签: cmakestatic-librariesstatic-linking

解决方案


您始终可以使用 VERBOSE=ON 参数来调试您的 CMakeLists.txt(在 Linux 上),这样您就可以验证命令是否是您所期望的。

$> make VERBOSE=ON

在您的情况下,CMake 扫描 ac 的依赖项并将bc丢弃为ac的真正依赖项,这就是它没有链接的原因。


推荐阅读