zoukankan      html  css  js  c++  java
  • 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++

    您的资助是我最大的动力!
    金额随意,欢迎来赏!

  • 相关阅读:
    BZOJ 3811: 玛里苟斯 线性基
    HDU 3949 XOR 线性基
    BZOJ 2115: [Wc2011] Xor 线性基 dfs
    BZOJ 3963 HDU3842 [WF2011]MachineWorks cdq分治 斜率优化 dp
    BZOJ 3262: 陌上花开 cdq分治 树状数组
    BZOJ 2653: middle 主席树 二分
    BZOJ 3524 [Poi2014]Couriers 主席树
    BZOJ 4826: [Hnoi2017]影魔 单调栈 主席树
    BZOJ 3956: Count 主席树 可持久化线段树 单调栈
    2018/4/9省选模拟赛 0分
  • 原文地址:https://www.cnblogs.com/Corphish/p/8260554.html
Copyright © 2011-2022 走看看