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

使用CPack与windeployqt制作安装包时可执行文件未打包问题求助

问题根因

你的CMake配置缺失了可执行文件的安装规则,同时windeployqt的--dir参数仅会将程序运行依赖的Qt库、资源文件输出到指定目录,不会自动拷贝你传入的目标exe本身,所以打包时只有qtDeploy目录下的依赖文件被打包,exe始终留在构建根目录。

两种修复方案任选其一即可

方案1:新增可执行文件的安装规则

在Windows分支内的install(DIRECTORY "${CMAKE_BINARY_DIR}/qtDeploy/" ...)代码段下方,新增如下install指令,直接将编译生成的可执行文件加入安装打包路径:

install(TARGETS translationVerification
        DESTINATION .
)

方案2:在POST_BUILD阶段将exe拷贝到qtDeploy目录

修改现有的POST_BUILD自定义命令,新增一行拷贝指令,把生成的exe和依赖一起放到qtDeploy目录下,这样原来的install qtDeploy的规则就会把exe一起打包:

add_custom_command(TARGET translationVerification POST_BUILD
                   COMMAND "${CMAKE_COMMAND}" -E remove_directory "${CMAKE_CURRENT_BINARY_DIR}/qtDeploy/"
                   # 新增以下这行拷贝指令
                   COMMAND "${CMAKE_COMMAND}" -E copy_if_different $<TARGET_FILE:translationVerification> "${CMAKE_CURRENT_BINARY_DIR}/qtDeploy/"
                   COMMAND "${CMAKE_COMMAND}" -E
                           env PATH="${_qt_bin_dir}" "${WINDEPLOYQT_EXECUTABLE}"
                           --verbose 0
                           --no-compiler-runtime
                           --no-angle
                           --no-webkit2
                           --no-quick-import
                           --no-translations
                           --dir "${CMAKE_CURRENT_BINARY_DIR}/qtDeploy/" $<TARGET_FILE:translationVerification>
                   COMMENT "Deploying Qt..."
)
额外小问题修复

你当前配置里set(CPACK_NSIS_DISPLAY_NAME ${CMAKE_PACKAGE_NAME})引用了未定义的变量CMAKE_PACKAGE_NAME,需要改成${CPACK_PACKAGE_NAME},否则NSIS安装包的显示名称会为空。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:57:03