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

时间:2017-09-21 14:38:43

标签: cmake

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

  • 图书馆L(compoesd ba a 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 个答案:

答案 0 :(得分:0)

我最终使用INTERFACE_LINK_LIBRARIES 未将L链接到P 来解决此问题。

我通过添加包含其插件的附加变量来配置L:

LIST(APPEND L_PLUGINS P)

使用L的目​​标只需使用变量$ {L_PLUGIN}即可访问其插件(例如,为了安装其文件)

注意:这与Qt插件组件使用的方法相同