哪个 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_LIBRARIES
、IMPORTED_LINK_INTERFACE_LIBRARIES
、LINK_LIBRARIES
、IMPORTED_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 中可见)。
考虑使用 find_package( foo REQUIRED )
导入提供共享库的目标。目标 foo 本身依赖于另一个共享库 bar.dll,它仅在其实现中使用,在其 headers 中不可见。但是作为 foo 的客户,我还必须部署 bar.dll 才能 运行 我的代码。
那么导入的目标 foo 中的哪个 属性 应该给我我也必须部署 bar 的信息?
应该是 LINK_INTERFACE_LIBRARIES
、IMPORTED_LINK_INTERFACE_LIBRARIES
、LINK_LIBRARIES
、IMPORTED_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 中可见)。