QMAKESPEC環境變量詳解


相關知識

要講解QMAKESPEC環境變量的知識,先要了解如下知識

  • qmake
  • .pro項目文件
  • makefile文件

1.qmake

qmake是用來為不同的平台的開發項目創建Makefile的Trolltech開發一個易於使用的工具。手寫Makefile是比較困難並且容易出錯的,尤其是需要給不同的平台和編譯器組合寫幾個Makefile。qmake簡化了Makefile的生成,使用qmake,開發者創建一個簡單的項目文件並且運行qmake生成適當的Makefile。qmake會注意所有的編譯器和平台的依賴性,所以為了創建一個Makefile只需要一個只有幾行信息的文件(pro文件),后面會介紹如何創建一個項目文件。qmake可以供任何一個軟件項目使用,而不用管它是不是用Qt寫的,盡管它包含了為支持Qt開發所擁有的額外的特征。qmake基於一個項目文件這樣的信息來生成Makefile。項目文件可以由開發者生成。項目文件通常很簡單,但是如果需要它是非常完善的。不用修改項目文件,qmake也可以為Microsoft Visual Studio生成項目。

2. .pro項目文件

一個項目文件是用來告訴qmake關於為這個應用程序創建Makefile所需要的細節。例如,一個源文件和頭文件的列表、任何應用程序特定配置、例如必需要連接的額外庫、或者一個額外的包含路徑,都應該放到項目文件中。

3. makefile文件

makefile關系到了整個工程的編譯規則。一個工程中的源文件不計數,其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至於進行更復雜的功能操作,因為makefile就像一個Shell腳本一樣,其中也可以執行操作系統的命令。makefile帶來的好處就是——“自動化編譯”,一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大的提高了軟件開發的效率。make是一個命令工具,是一個解釋makefile中指令的命令工具,一般來說,大多數的IDE都有這個命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可見,makefile都成為了一種在工程方面的編譯方法。

當你已經創建好你的.pro項目文件,生成Makefile就很容易了,你所要做的就是先到你所生成的項目文件那里然后輸入:Makefile可以像這樣由“.pro”文件生成:
qmake -o Makefile hello.pro
對於Visual Studio的用戶,qmake也可以生成“.dsp”文件,例如:
qmake -t vcapp -o hello.dsp hello.pro

下面進入主題講解QMAKESPEC環境變量

qmake需要一個平台和編譯器描述文件,其中包含許多默認值用於生成適當的Makefiles。標准的Qt發行版附帶了許多這些文件,位於Qt安裝的子目錄mkspecs中。

該QMAKESPEC環境變量可以包含任何以下內容:

  • 包含qmake.conf文件的目錄的完整路徑。在這種情況下,qmake將從qmake.conf該目錄中打開文件。如果文件不存在,qmake將會退出並顯示錯誤。

  • 平台 - 編譯器組合的名稱。在這種情況下,qmake將在由mkspecs編譯Qt時指定的數據路徑的子目錄指定的目錄中進行搜索(請參閱QLibraryInfo :: DataPath)。

注:該QMAKESPEC路徑將被自動添加到INCLUDEPATH系統變量。

QMAKESPEC必須設置為你所使用的系統的平台和編譯器的組合。 舉例來說,假如你使用的是Windows和Microsoft Visual Studio,你應該把環境變量設置為win32-msvc。如果你使用的是Solaris和g++,你應該把環境變量設置為solaris-g++。在qt/mkspecs中的每一個目錄里面,都有一個包含了平台和編譯器特定信息的qmake.conf文件。這些設置適用於你要使用qmake的任何項目,請不要修改它,除非你是一個專家。例如,假如你所有的應用程序都必須和一個特定的庫連接,你可以把這個信息添加到相應的qmake.conf文件中。當你在設置QMAKESPEC時,可以從下面的可能的環境變量列表中進行選擇:
aix-64 hpux-cc irix-032 netbsd-g++ solaris-cc unixware7-g++ aix-g++ hpux-g++ linux-cxx openbsd-g++ solaris-g++ win32-borland aix-xlc hpux-n64 linux-g++ openunix-cc sunos-g++ win32-g++ bsdi-g++ hpux-o64 linux-icc qnx-g++ tru64-cxx win32-msvc dgux-g++ hurd-g++ linux-kcc reliant-64 tru64-g++ win32-watc freebsd-g++ irix-64 macx-pbuilder reliant-cds ultrix-g++ win32-visa hpux-acc irix-g++ macx-g++ sco-g++ unixware-g hpux-acc irix-n32 solaris-64 unixware7-cc
envvar是下面之一時,環境變量應該被設置到qws/envvar:
linux-arm-g++ linux-generic-g++ linux-mips-g++ linux-x86-g++ linux-freebsd-g++ linux-ipaq-g++ linux-solaris-g++ qnx-rtp-g++


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM