问CMake -如何使用TARGET_RUNTIME_DLLS处理导入的库目标的依赖关系EN

问CMake -如何使用TARGET_RUNTIME_DLLS处理导入的库目标的依赖关系EN

在我的项目中,我依赖一个名为foo的第三方共享库。

foo本身依赖于其他一些第三方dll (让我们称之为bar.dll),然而,我的项目既没有使用它,也没有在foo的头中公开它。

foo目标被创建并链接到我的项目,如下所示

代码语言:javascript复制add_library(foo SHARED IMPORTED)

set_target_properties(foo PROPERTIES

IMPORTED_LOCATION "${foo_dll_path}"

IMPORTED_IMPLIB "${foo_lib_path}"

)

target_link_libraries(my_project PUBLIC foo)稍后,将触发post构建事件,通过$生成器表达式创建指向所有依赖的第三方库的硬链接。

如何在此设置中引入bar.dll以在$中显示

到目前为止,我尝试将bar.dll添加为另一个通过add_library(bar UNKNOWN IMPORTED)和add_library(bar SHARED IMPORTED)导入的目标,并相应地在bar上设置IMPORTED_LOCATION,但这确实会创建链接器错误。示例:

代码语言:javascript复制add_library(bar UNKNOWN IMPORTED)

set_target_properties(bar PROPERTIES

IMPORTED_LOCATION "${bar_dll_path}"

)

target_link_libraries(foo INTERFACE bar)在UNKNOWN的情况下,链接器将使用bar.dll作为链接器输入,如果SHARED IMPORTED CMake要求设置IMPORTED_IMPLIB,当然会失败,但我既没有bar.dll的导入库,也不想将my_project链接到它。

还有其他的建议如何处理吗?

相关推荐

腾达无线路由器排行榜
天天付手机pos机使用说明
昔日最强中坦查狄伦155!堪称最娱乐投石机
揭秘E75坦克弱点:实战经验分享助你提升胜率
红烧鳜鱼
生意参谋里的数据怎么分析