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

时间:2017-07-26 18:18:09

标签: cmake shared-libraries target

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

那么导入的目标foo的哪个属性应该给我提供我还要部署bar的信息?

是否应该在LINK_INTERFACE_LIBRARIESIMPORTED_LINK_INTERFACE_LIBRARIESLINK_LIBRARIESIMPORTED_LINK_DEPENDENT_LIBRARIES或其他内容?

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

假设您使用的是“现代”版本的cmake(3.anything),那么您正在寻找IMPORTED_LINK_DEPENDENT_LIBRARIES

LINK_INTERFACE_LIBRARIESIMPORTED_LINK_INTERFACE_LIBRARIES都已弃用,因此请不要考虑它们。

LINK_LIBRARIES用于构建目标;因为你要导入一个find_package的库,所以它应该没用多少。

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