哪个 cmake 属性 应该为导入的目标保存私有链接的共享库?

Which cmake property should hold privately linked shared libraries for imported targets?

考虑使用 find_package( foo REQUIRED ) 导入提供共享库的目标。目标 foo 本身依赖于另一个共享库 bar.dll,它仅在其实现中使用,在其 headers 中不可见。但是作为 foo 的客户,我还必须部署 bar.dll 才能 运行 我的代码。

那么导入的目标 foo 中的哪个 属性 应该给我我也必须部署 bar 的信息?

应该是 LINK_INTERFACE_LIBRARIESIMPORTED_LINK_INTERFACE_LIBRARIESLINK_LIBRARIESIMPORTED_LINK_DEPENDENT_LIBRARIES 还是其他格式?

感谢您的宝贵时间。

假设您使用的是 "modern" 版本的 cmake (3.anything),那么您正在寻找 IMPORTED_LINK_DEPENDENT_LIBRARIES.

LINK_INTERFACE_LIBRARIES and IMPORTED_LINK_INTERFACE_LIBRARIES 都被弃用了,所以不要考虑它们。

LINK_LIBRARIES 用于构建目标;由于您正在使用 find_package 导入库,因此它应该没有多大用处。

INTERFACE_LINK_LIBRARIES,在导入的目标上,告诉您哪些库是接口中的依赖项(在 headers 中可见)。