【发布时间】:2020-03-30 06:06:21
【问题描述】:
如果我在 CMake 中指定 OBJECT 库的依赖链,则目标可执行文件中只使用最后一个的 target_link_libraries 依赖链。
小例子:
main 依赖于objB,后者依赖于objA。
objA 和 objB 都是 CMake 中的 OBJECT 库。
我希望main 与两个目标文件链接。没有。
cmake_minimum_required(VERSION 3.13)
project(transitive-object-library-link-issue VERSION 1.0.0 LANGUAGES C)
add_library(objA OBJECT a.c)
add_library(objB OBJECT b.c)
target_link_libraries(objB PUBLIC objA)
# Should link with 'a.o', since 'objA' is "linked" by 'objB'
add_executable(main main.c)
target_link_libraries(main objB)
注意:https://github.com/scraimer/cmake-transitive-object-library-link-issue 上提供了一组工作文件
如果我将objA 更改为非OBJECT 库,则可以通过摆脱OBJECT 库依赖关系链来消除问题。也就是说,换行
add_library(objA OBJECT a.c)
成为:
add_library(objA a.c)
所以这是OBJECT 库特有的东西。我应该如何指定使main 与objA 链接的依赖项? (无需在每个使用objB 的可执行目标中指定objA)
【问题讨论】:
-
objA和objA都是 CMake 中的 OBJECT 库。你的意思是objA和objB都是CMake中的OBJECT库。 -
@ManthanTilva 已修复。谢谢。
标签: cmake