Visual Studio 同时配置Qt 32位和64位版本开发环境

        本文章旨在给使用Visual Studio开发Qt程序的开发人员提供一套同时构建32位版本Qt和64位版本Qt开发环境的方案,因为我自己也遇到了这个问题,国内的网上好像并没有好的解决方案,希望能够帮到有同样需求的开发人员。

        Qt有32位版本的,同样也有64位版本的,在64位机器上可以同时安装32位版本的Qt和64位版本的Qt,但是做开发的时候编译64位程序只能用64位版本的Qt,32位程序只能用32位的Qt。这给使用Visual Studio 和Qt做集成环境开发的开发人员带来了不小的麻烦,在Visual Studio里对一个工程我们知道是可以编译32位程序,也可以编译64位程序的。如果我们的一个使用Qt并在Visual Studio下开发的程序既要发布32位版本又要发布64位版本,这给开发人员带来了不小的挑战:

        1.通过Qt VS Tools我们可以将Qt版本切换到32位或者64位,但QTDIR环境变量不会变,所以工程配置里关于Qt的相关路径只会是你环境变量里配置的路径;

        2.搞定了环境变量的问题,还有一个棘手的问题,就是Qt调试时需要plugins\platforms目录的支持,我们一般发布程序时是直接将platforms拷贝到exe文件同级目录下,我们调试的时候也可以这样做,但这样做并不好,每次建立工程都要拷贝。

        解决问题1:取消系统环境变量里对QTDIR的设置,而在将QTDIR配置成Visual Studio工程里的用户自定义宏,像下面这样,在属性管理器中,找到Microsoft.Cpp.Win32.user和Microsoft.Cpp.x64.user点击,分别创建用户宏QTDIR,分别指向32位版本和64位版本Qt的路径(属性管理器:视图-其他窗口-属性管理器),这样当你切换X86和X64配置的时候对应Qt相关的库配置、调试路径配置就会改变到正确的Qt版本上:

解决问题2:问题1解决之后,在工程中切换x86和x64配置,就都可以正确编译和链接了,但是问题又来了,比如我的电脑上之前默认配置的x64版本的Qt,这是后调试x86版本的程序会提示下面的问题(这个问题大家都不陌生,但一般是在发布程序时会遇到):

        那么这个问题怎么解决呢,查了很多资料都没找到满意的解决办法,最后在外网找到国外的一个大牛利用Windows文件重定向算是完美解决了(https://superuser.com/questions/740323/qts-plugin-path-and-wow64)。

(Windows文件重定向原理:https://docs.microsoft.com/zh-cn/windows/desktop/WinProg64/file-system-redirector)

解决方法:在系统环境变量中设置QT_PLUGIN_PATH = %windir%\system32\Qt-plugins ,将64位Qt下的msvc2015_64\plugins\platforms目录拷贝到C:\Windows\System32\Qt-plugins下,将32位Qt下的msvc2015\plugins\platforms拷贝到C:\Windows\SysWOW64\Qt-plugins下,重启之后就能在Visual Studio下正常编译调试32位Qt程序和64位Qt程序了,目录结构:

注意:如果设置了QT_PLUGIN_PATH影响了系统里安全的第三方QT应用,可以这样设置QT_PLUGIN_PATH=./;%windir%\system32\Qt-plugins , 让第三方应用加载运行目录下的QT插件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章