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插件。

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