2017-09-21 107 views
0

我有一个预编译库,也采用动态加载插件。如何为插件组件设置CMAKE导入目标?

  • 库L(compoesd BA一个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

回答

0

我已经结束了使用INTERFACE_LINK_LIBRARIES通过不链接大号解决这一至P

我通过增加一个额外的变量包含它的插件配置L:

LIST(APPEND L_PLUGINS P) 

使用L可通过简单地使用变量$ {L_PLUGIN}可以访问它的插件的目标(例如,以安装其文件)

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