考虑导入一个提供共享库的find_package( foo REQUIRED )
目标。目标foo本身依赖于另一个共享库bar.dll,它只在其实现中使用,在其标题中不可见。但作为foo的客户端,我还必须部署bar.dll才能运行我的代码。
那么导入的目标foo的哪个属性应该给我提供我还要部署bar的信息?
是否应该在LINK_INTERFACE_LIBRARIES
,IMPORTED_LINK_INTERFACE_LIBRARIES
,LINK_LIBRARIES
,IMPORTED_LINK_DEPENDENT_LIBRARIES
或其他内容?
感谢您的时间。
答案 0 :(得分:1)
假设您使用的是“现代”版本的cmake(3.anything),那么您正在寻找IMPORTED_LINK_DEPENDENT_LIBRARIES
。
LINK_INTERFACE_LIBRARIES
和IMPORTED_LINK_INTERFACE_LIBRARIES
都已弃用,因此请不要考虑它们。
LINK_LIBRARIES
用于构建目标;因为你要导入一个find_package
的库,所以它应该没用多少。
INTERFACE_LINK_LIBRARIES
,在导入的目标上,告诉您哪些库是接口中的依赖项(在标题中可见)。