【发布时间】:2017-06-12 00:51:48
【问题描述】:
cmake 脚本 FindwxWidgets 创建所有 .lib 文件的列表。
但是,此脚本不提供 wxWidgets dll 列表。
将所有 wxWidgets Dll 文件存储在列表中以用于调试和发布目标的 CMake 脚本是什么?
ps:我发现了一些基于 wxWidgets 和 CMake 的项目,但它们都与 wxWidgets 静态链接。
正在进行的工作:
当前肮脏的解决方案是获取 wxWidgets 目录中的所有 dll 并安装在与 exe 相同的文件夹中。但是没有过滤使用过的组件,因为它没有与 find_package 命令链接。
# Copy wxWidgets Dll's
# extract folder path
file(GLOB wxwidgets_dlls "${wxWidgets_LIB_DIR}/*.dll")
list(APPEND WXWidgets_DLL_Slash "")
foreach(WXWidgets_DLL ${wxwidgets_dlls})
# Check if dll does not contain "ud" for debug dll
get_filename_component(DLL_FILENAME ${WXWidgets_DLL} NAME_WE)
string(FIND ${DLL_FILENAME} "ud" debug_annot)
if(${debug_annot} LESS 0)
string(REPLACE "\\" "/" WXWidgets_DLL ${WXWidgets_DLL})
MESSAGE(STATUS "Install ${WXWidgets_DLL}")
list(APPEND WXWidgets_DLL_Slash ${WXWidgets_DLL})
endif()
endforeach(WXWidgets_DLL)
install(FILES
${WXWidgets_DLL_Slash}
DESTINATION .)
【问题讨论】:
-
不确定你的项目是否必须使用 CMake,但如果没有,为什么不编译 wxWidgets 而不使用 CMake?这很容易......
-
@macroland 我不编译 wxWidgets,我编译了一个链接到 wxWidgets 的项目。然而,动态链接最终的可执行文件需要 wxWidgets Dlls。所以我必须找到一种方法来使用 CMake 查找和复制这些 Dll。
-
我会投票结束你的问题,因为不清楚你真正想要什么。可以举一个最小的例子来说明你目前拥有什么以及你想要什么缺乏什么?