gpt4 book ai didi

cmake - 如何指定 OBJECT 库的导入依赖项?

转载 作者:行者123 更新时间:2023-12-03 01:55:30 28 4
gpt4 key购买 nike

我有一个OBJECT图书馆objlib链接到主要目标 maintargetobjlib有一个依赖库,例如 ZLIB 。如果我们使用旧版 <package-name>_*变量那么就很容易了:

add_library(objlib OBJECT ...)
target_include_directories(objlib ${ZLIB_INCLUDE_DIRS})
...
add_executable(maintarget $<TARGET_OBJECTS:objlib>)
target_link_libraries(maintarget ${ZLIB_LIBRARIES})

但我想将依赖项用作 IMPORTED库,因为它更简洁(创建配置模块的便捷方法,即使用 install(EXPORT ...) ,就可以做到这一点)。

以下代码不起作用,因为 target_link_libraries不能与 OBJECT 一起使用图书馆:

add_library(objlib OBJECT ...)
target_link_libraries(objlib ZLIB::ZLIB)

链接 ZLIB::ZLIBmaintarget也不起作用,objlib没有获取包含目录:

add_library(objlib OBJECT ...)
...
add_executable(maintarget $<TARGET_OBJECTS:objlib>)
target_link_libraries(maintarget ZLIB::ZLIB)

使用中间体进行黑客攻击 INTERFACE库( objlib-wrapper )也不起作用。

唯一有效的方法是查询 IMPORTED库的属性并重新生成 <package-name>_* 中通常可用的信息变量。这是一个令人讨厌的解决方法。

有更好的方法吗?

最佳答案

从 CMake 3.12 开始,您现在可以在对象库上使用 target_link_libraries 来获取使用要求。

使用 3.12,您提到的这种方法应该有效:

add_library(objlib OBJECT ...)
target_link_libraries(objlib ZLIB::ZLIB)

关于cmake - 如何指定 OBJECT 库的导入依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31290077/

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