如何为插件组件设置 CMAKE 导入目标?

Posted

技术标签:

【中文标题】如何为插件组件设置 CMAKE 导入目标?【英文标题】:How to setup a CMAKE imported target for plugin components? 【发布时间】:2017-09-21 14:38:42 【问题描述】:

我有一个预编译的库,它也使用动态加载的插件。

库 L(由 library.liblibrary.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 导入目标?的主要内容,如果未能解决你的问题,请参考以下文章

如何为“类似boost”的多组件库编写cmake模块?

cmake - 如何为英特尔编译器设置不同的变量

如何为詹金斯参数化远程触发插件设置远程主机

如何为高阶功能组件设置 PropTypes?

如何为 WordPress 插件/小部件开发设置 Netbeans 项目

xcconfigs:如何为一个目标设置多个配置