CMake用cpack打包Qt应用时Qt运行库与可执行文件存放路径不一致问题
问题原因
- 该问题和
include(GNUInstallDirs)无关,是两处安装目标的路径配置不一致导致的:- 项目可执行文件
Translation_Verification的安装规则指定路径为${CMAKE_INSTALL_BINDIR},默认对应bin文件夹 - 调用
windeployqt生成的Qt运行时依赖、插件等文件,安装规则指定路径为.,也就是安装包的根目录
- 项目可执行文件
- 启动exe时,Windows优先在exe所在目录搜索依赖的dll和插件,找不到根目录下的Qt相关文件,就会抛出no Qt platform plugin could be initialized的报错。
解决方案
只需要修改Windows分支下Qt依赖的安装路径,和可执行文件的安装路径保持一致即可,将原来的安装规则:
install( DIRECTORY ${CMAKE_BINARY_DIR}/qtDeploy/ DESTINATION . FILES_MATCHING PATTERN "*.*" )
替换为:
install( DIRECTORY ${CMAKE_BINARY_DIR}/qtDeploy/ DESTINATION ${CMAKE_INSTALL_BINDIR} FILES_MATCHING PATTERN "*.*" )
修改后重新生成构建、运行cpack打包,所有Qt依赖就会和可执行文件一起放在bin目录下,程序可以正常启动。
内容的提问来源于stack exchange,提问作者island slangz
相关产品推荐
相关产品推荐

