QMAKESPEC環境變量詳解

相關知識

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

  • 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生成項目。app

2. .pro項目文件

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

3. makefile文件

makefile關係到了整個工程的編譯規則。一個工程中的源文件不計數,其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些文件須要先編譯,哪些文件須要後編譯,哪些文件須要從新編譯,甚至於進行更復雜的功能操做,由於makefile就像一個Shell腳本同樣,其中也能夠執行操做系統的命令。makefile帶來的好處就是——「自動化編譯」,一旦寫好,只須要一個make命令,整個工程徹底自動編譯,極大的提升了軟件開發的效率。make是一個命令工具,是一個解釋makefile中指令的命令工具,通常來講,大多數的IDE都有這個命令,好比:Delphi的make,Visual C++的nmake,Linux下GNU的make。可見,makefile都成爲了一種在工程方面的編譯方法。ui

當你已經建立好你的.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中。
unix

該QMAKESPEC環境變量能夠包含任何如下內容:blog

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

  • 平臺 - 編譯器組合的名稱。在這種狀況下,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++編譯器

相關文章
相關標籤/搜索