相关知识
要讲解QMAKESPEC环境变量的知识,先要了解以下知识linux
- qmake
- .pro项目文件
- makefile文件
qmake是用来为不一样的平台的开发项目建立Makefile的Trolltech开发一个易于使用的工具。手写Makefile是比较困难而且容易出错的,尤为是须要给不一样的平台和编译器组合写几个Makefile。qmake简化了Makefile的生成,使用qmake,开发者建立一个简单的项目文件而且运行qmake生成适当的Makefile。qmake会注意全部的编译器和平台的依赖性,因此为了建立一个Makefile只须要一个只有几行信息的文件(pro文件),后面会介绍如何建立一个项目文件。qmake能够供任何一个软件项目使用,而不用管它是否是用Qt写的,尽管它包含了为支持Qt开发所拥有的额外的特征。qmake基于一个项目文件这样的信息来生成Makefile。项目文件能够由开发者生成。项目文件一般很简单,可是若是须要它是很是完善的。不用修改项目文件,qmake也能够为Microsoft Visual Studio生成项目。app
一个项目文件是用来告诉qmake关于为这个应用程序建立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操作系统
qmake须要一个平台和编译器描述文件,其中包含许多默认值用于生成适当的Makefiles。标准的Qt发行版附带了许多这些文件,位于Qt安装的子目录mkspecs中。
unix
该QMAKESPEC环境变量能够包含任何如下内容:blog
包含qmake.conf文件的目录的完整路径。在这种状况下,qmake将从qmake.conf该目录中打开文件。若是文件不存在,qmake将会退出并显示错误。ip
平台 - 编译器组合的名称。在这种状况下,qmake将在由mkspecs编译Qt时指定的数据路径的子目录指定的目录中进行搜索(请参阅QLibraryInfo :: DataPath)。开发
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++编译器