Windows下多個版本Qt的安裝配置

Windows下多個版本Qt的安裝配置

經常需要在同一臺機器中裝有多套Qt程序,比如,同時裝有

  • 同一個版本的但不是同一編譯環境編譯的Qt,(mingw版 與 VS2008版等)
  • 同一編譯環境但不同版本的Qt,(Qt4.5.2, Qt4.6.0 及 Qt4.7.0beta2等)
  • 以上情況混合等

這麼多套Qt裝到同一機器中,如何自由切換呢。

方法一

  • 在機器中建立 多個 用戶,每個用戶設置不同的 Qt 作爲其默認的開發環境。這樣比較簡單,想換環境,只需切換下用戶即可。但不太靈活,很多人不喜歡。

方式二

  • 用 QtCreator,用這個東西很簡單了,只要在 工具|選項中 設置好各個版本的 Qt 即可。QtCreator 會自動處理各個版本的環境變量。但QtCreator 目前還不是太成熟,使用中總會偶爾有點小問題(比如 debug和release選擇上,編譯時找不到QMake等,不過這個東西進步很快,值得期待)

方式三

  • 個人喜歡在用命令行中直接輸 qmake、make debug 一類的,感覺編譯時還是這麼舒服一點。
Qt 裝好之後,會提供一個在開始菜單中提供一個 Command Prompt。我們也可通過打開 cmd,然後調用 Qt 安裝目錄下的 binqtvars.bat來配置Qt環境 。但每次都這樣太不方便了。[喝小酒的網摘]http://blog.const.net.cn/a/8764.htm

用命令行的話,最好是能隨時方便地打開各個命令行,在Windows右鍵菜單中加入打開命令行的菜單是個好主意。恩,就這麼辦吧

安裝多個Qt

  • 下載 Qt4.6.0-vs2008 版,安裝到 D:QtQt4.6.0
  • 下載 Qt4.7.0-beta2-mingw,安裝到 E:QtQt4.7.0-beta2
  • ... (爲了自己不犯迷糊,VS2008編譯的,安裝到D盤;Mingw編譯的,安裝到E盤)

設置默認Qt

  • 選擇一個自己最常用的版本,將其bin路徑添加到系統環境變量 path 內(這樣該版本編譯的程序就可以直接通過雙擊運行了)

比如,我們將 D:QtQt4.6.0in 添加到系統path內。

將各Qt的控制檯加入右鍵菜單

設置 Qt4.6.0-VS2008

打開註冊表,創建項:

[HKEY_CLASSES_ROOT*shellQt460-VS2008command]

設置其默認值

cmd.exe /k "d:Qt4.6.0inqtvars.bat vsvars"

設置 Qt4.7.0-Mingw

創建項:

[HKEY_CLASSES_ROOT*shellQt470beta2-Mingwcommand]

設置其默認值

cmd.exe /k "e:Qt4.7.0-beta2inqtvars.bat"

第三方庫

裝有多套 Qt 後,安裝第三方庫時這也是麻煩的問題。第三方庫分兩種

Qt的第三方庫

  • 比如 QextSerialPort, Qwt等,這些庫一般都是和編譯器與Qt的版本都相關的。 對這種情況,需要用各個版本的Qt對其編譯一遍:然後 將將編譯後的.lib (.a)、.dll 以及頭文件 分別拷貝到相應的 Qt 的lib、bin、以及 include 目錄內。

與Qt無關的第三方庫

  • 比如 OpenCV 等,和Qt無關,只和編譯器相關 對這種情況,用不同編譯器各編譯一次即可。 比如 OpenCV 編譯後,分別爲

 

D:OpenCV-2.1.0-VS2008
E:OpenCV-2.1.0-Mingw
  • 這兒呢,我們可以將其lib、bin、include 分別拷貝到 Qt 的 lib、bin、include 目錄內。 但這樣呢,一是重複,比如,同時有 Qt4.5.0-VS2008和Qt4.6.0-VS2008,二是其他C++程序使用OpenCV時不太友好。

那麼我們怎麼處理這個問題呢?先看運行時需要的 bin :

兩套OpenCV,我們只能將其中一套加入到系統Path內

這個與我們前面的默認Qt一直就可以了,將

D:OpenCV-2.1.0-VS2008inDebug;D:OpenCV-2.1.0-VS2008inRelease

加入系統Path內

對於不在系統Path內的這套OpenCV,我們將其設置到 Qt 的配置文件內

在這兒,我們修改文件:

e:Qt4.7.0-beta2inqtvars.bat

將 E:OpenCV-2.1.0-Mingwin 加入其Path內

bin 的問題解決了,lib 和 include 的問題呢?

個人喜歡建立一個文件: opencv.pri

OPENCVPATH_MSVC = D:/OpenCV-2.1.0-vs2008

win32-msvc*{
     INCLUDEPATH += $${OPENCVPATH_MSVC}/include
     CONFIG(debug, debug|release) {
         LIBS+=-L$${OPENCVPATH_MSVC}/lib/debug 
               -lcxcore210d 
               -lhighgui210d
     } else {
         LIBS += -L$${OPENCVPATH_MSVC}/lib/release 
                 -lcxcore210 
                 -lhighgui210
    }
}

OPENCVPATH_MINGW = E:/OpenCV-2.1.0-mingw
win32-g++{
    INCLUDEPATH += $${OPENCVPATH_MINGW}/include
    LIBS += -L$${OPENCVPATH_MINGW}/lib 
            -lcxcore210 
            -lhighgui210
}

unix:LIBS += -lcv 
    -lhighgui

一個工程需要用到OpenCV時,只需要pro文件內include該文件就行了。

應該還有其他更好的辦法來處理這種問題,希望其他人指教

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