如何为插件组件设置 CMAKE 导入目标?
Posted
技术标签:
【中文标题】如何为插件组件设置 CMAKE 导入目标?【英文标题】:How to setup a CMAKE imported target for plugin components? 【发布时间】:2017-09-21 14:38:42 【问题描述】:我有一个预编译的库,它也使用动态加载的插件。
库 L(由 library.lib 和 library.dll 组成) 插件 P(仅由 plugin.dll 组成)我将 L 的导入目标定义为:
add_library(L SHARED IMPORTED)
set_target_properties(L PROPERTIES
IMPORTED_LOCATION_RELEASE library.dll
IMPLIB_LOCATION_RELEASE library.lib
)
set_target_properties(L PROPERTIES
INTERFACE_LINK_LIBRARIES P
)
如何定义 P 的导入目标及其属性?
如果我将其定义为:
add_library(P MODULE IMPORTED)
set_target_properties(P PROPERTIES
IMPORTED_LOCATION_RELEASE plugin.dll
)
那么使用L生成的项目会错误地将plugin.dll视为要链接的lib。 我想保留依赖项(以便我可以传递安装plugin.dll)但避免L链接目标P
【问题讨论】:
【参考方案1】:我最终通过不使用 INTERFACE_LINK_LIBRARIES 将 L 链接到 P 解决了这个问题。
我通过添加一个包含其插件的附加变量来配置 L:
LIST(APPEND L_PLUGINS P)
使用 L 的目标可以通过简单地使用变量 $L_PLUGIN 来访问其插件(例如,为了安装它的文件)
注意:这与 Qt 插件组件使用的方法相同
【讨论】:
以上是关于如何为插件组件设置 CMAKE 导入目标?的主要内容,如果未能解决你的问题,请参考以下文章