You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake链接wxWidgets时TARGET_RUNTIME_DLLS为空如何实现DLL自动拷贝

解决方案

方案1:使用wxWidgets官方CONFIG模式查找(推荐)

你自行编译安装的wxWidgets会在安装目录下生成官方的wxWidgetsConfig.cmake配置文件,该文件会创建带完整IMPORTED_LOCATION_*属性的标准导入目标,无需依赖CMake自带的FindwxWidgets.cmake,TARGET_RUNTIME_DLLS可自动识别依赖的DLL。
修改后的CMakeLists示例如下:

cmake_minimum_required(VERSION 3.16)
project(Test)

add_executable(Test WIN32 Main.cpp)

# 指定安装路径用CONFIG模式查找wxWidgets
find_package(wxWidgets REQUIRED COMPONENTS core base CONFIG
    PATHS ${CMAKE_CURRENT_LIST_DIR}/../thirdparty/my_install
)

# 直接链接官方导入目标即可,无需include wxWidgets_USE_FILE
target_link_libraries(Test PRIVATE wx::core wx::base)

# 此时TARGET_RUNTIME_DLLS已包含wxWidgets的DLL,直接拷贝到输出目录
add_custom_command(TARGET Test POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_RUNTIME_DLLS:Test> $<TARGET_FILE_DIR:Test>
    COMMAND_EXPAND_LISTS
)

该方案和你之前链接SDL的逻辑完全一致,无需额外处理DLL路径。

方案2:基于FindwxWidgets输出手动拼接DLL路径

如果因版本等原因必须使用CMake自带的FindwxWidgets.cmake,可以通过其输出的变量手动拼接对应配置的DLL路径,示例如下:

cmake_minimum_required(VERSION 3.16)
project(Test)

add_executable(Test WIN32 Main.cpp)

SET(wxWidgets_ROOT_DIR ${CMAKE_CURRENT_LIST_DIR}/../thirdparty/my_install)
find_package(wxWidgets COMPONENTS core base REQUIRED)
include(${wxWidgets_USE_FILE})
target_link_libraries(Test PRIVATE ${wxWidgets_LIBRARIES})

if(WIN32 AND wxWidgets_USE_DYNAMIC)
    # 适配MSVC下Debug版本DLL带d后缀的命名规则
    set(WX_DLL_SUFFIX $<IF:$<CONFIG:Debug>,d,>)
    # 按你编译的wxWidgets版本修改版本号,如3.2.x填32,3.1.x填31
    set(WX_VER_SUFFIX 32)
    set(WX_RUNTIME_DLLS
        "${wxWidgets_LIB_DIR}/wxbase${WX_VER_SUFFIX}${WX_DLL_SUFFIX}_vc_custom.dll"
        "${wxWidgets_LIB_DIR}/wxcore${WX_VER_SUFFIX}${WX_DLL_SUFFIX}_vc_custom.dll"
    )
    # 构建后拷贝DLL到输出目录
    add_custom_command(TARGET Test POST_BUILD
        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${WX_RUNTIME_DLLS} $<TARGET_FILE_DIR:Test>
        COMMAND_EXPAND_LISTS
    )
endif()

注意:请根据你实际编译出来的wxWidgets DLL文件名调整路径和命名规则,避免拷贝失败。

内容的提问来源于stack exchange,提问作者CProg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:39:02