zoukankan      html  css  js  c++  java
  • Qt的.pro文件

     在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,

    .pro文件的写法如下:

    1.注释
    从“#”开始,到这一行结束。

    2.模板
    模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择:

    A>   app -建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。
    B>   lib - 建立一个库的makefile。
    C>   vcapp - 建立一个应用程序的VisualStudio项目文件。
    D>   vclib - 建立一个库的VisualStudio项目文件。
    E>   subdirs -这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile。

    3.指定头文件
    HEADERS = hello.h或者HEADERS += hello.h

    列出源文件的任何一个方法对头文件也都适用。

    4. 指定源文件
    SOURCES = *.cpp

    对于多源文件,可用空格分开,如:SOURCES = 1.cpp 2.cpp3.cpp
    或者每一个文件可以被列在一个分开的行里面,通过反斜线另起一行,就像这样:

    SOURCES = hello.cpp \
                main.cpp
    一个更冗长的方法是单独地列出每一个文件,就像这样:

        SOURCES+= hello.cpp
        SOURCES +=main.cpp

    这种方法中使用“+=”比“=”更安全,因为它只是向已有的列表中添加新的文件,而不是替换整个列表。

    5. 添加界面文件(ui)
    INTERFACES = filename.ui

    6. 指定目标文件名
    TARGET = filename

    如果不设置该项目,目标名会被自动设置为跟项目文件一样的名称

    7. 配置信息
    CONFIG用来告诉qmake关于应用程序的配置信息。

        CONFIG+= qt warn_on release

    在这里使用“+=”,是因为我们添加我们的配置选项到任何一个已经存在中。这样做比使用“=”那样替换已经指定的所有选项是更安全的。
    A>  qt部分告诉qmake这个应用程序是使用Qt来连编的。这也就是说qmake在连接和为编译添加所需的包含路径的时候会考虑到Qt库的。
    B>  warn_on部分告诉qmake要把编译器设置为输出警告信息的。
    C>  release部分告诉qmake应用程序必须被连编为一个发布的应用程序。在开发过程中,程序员也可以使用debug来替换release

    8. 平台相关性处理
    我们在这里需要做的是根据qmake所运行的平台来使用相应的作用域来进行处理。为Windows平台添加的依赖平台的文件的简单的作用域看起来就像这样:

    win32 {
    SOURCES += hello_win.cpp
    }

    所以如果qmake运行在Windows上的时候,它就会把hello_win.cpp添加到源文件列表中。如果qmake运行在其它平台上的时候,它会很简单地把这部分忽略。

    9. 如果一个文件不存在,停止qmake
    如果某一个文件不存在的 时候,你也许不想生成一个Makefile。我们可以通过使用exists()函数来检查一个文件是否存在。我们可以通过使用error()函数把正在运 行的qmake停下来。这和作用域的工作方式一样。只要很简单地用这个函数来替换作用域条件。对main.cpp文件的检查就像这样:

    !exists( main.cpp ) {
      error( "No main.cpp file found")
    }

    “!”用来否定这个测试,比如,如果文件存在,exists( main.cpp)是真,如果文件不存在,!exists( main.cpp )是真。

    10. 检查多于一个的条件
    假设你使用Windows并且当你在命令行运行你的应用程序的时候你想能够看到qDebug()语句。除非你在连编你的程序的时候使用console设置,你不会看到输出。我们可以很容易地把 console添加到CONFIG行中,这样在Windows下,Makefile就会有这个设置。但是如果告诉你我们只是想在当我们的应用程序运行在 Windows下并且当debug已经在CONFIG行中的时候,添加console。这需要两个嵌套的作用域;只要生成一个作用域,然后在它里面再生成 另一个。把设置放在最里面的作用域里,就像这样:

    win32 {
      debug {
         CONFIG += console
      }
    }

    嵌套的作用域可以使用冒号连接起来,像这样:

    win32:debug {
    CONFIG += console
    }

    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    “app”模板

    告诉qmake为建立一个应用程序生成一个makefile。当使用这个模板时,下面这些qmake系统变量是被承认的。你应该在你的.pro文件中使用它们来为你的应用程序指定特定信息。

    包含的文件:

    HEADERS - 应用程序中的所有头文件的列表。
    SOURCES - 应用程序中的所有源文件的列表。
    FORMS - 应用程序中的所有.ui文件(由Qt设计器生成)的列表。
    LEXSOURCES - 应用程序中的所有lex源文件的列表。
    YACCSOURCES - 应用程序中的所有yacc源文件的列表。
    TARGET - 可执行应用程序的名称。默认值为项目文件的名称。(如果需要扩展名,会被自动加上。)
    DESTDIR - 放置可执行程序目标的目录。
    DEFINES - 应用程序所需的额外的预处理程序定义的列表。
    INCLUDEPATH - 应用程序所需的额外的包含路径的列表。
    DEPENDPATH - 应用程序所依赖的搜索路径。
    VPATH - 寻找补充文件的搜索路径。
    DEF_FILE - 只有Windows需要:应用程序所要连接的.def文件。
    RC_FILE - 只有Windows需要:应用程序的资源文件。
    RES_FILE - 只有Windows需要:应用程序所要连接的资源文件。

    CONFIG变量
    配置变量指定了编译器所要使用的选项和所需要被连接的库。配置变量中可以添加任何东西,但只有下面这些选项可以被qmake识别。
    下面这些选项控制着使用哪些编译器标志:
       release - 应用程序将以release模式连编。如果“debug”被指定,它将被忽略。
       debug - 应用程序将以debug模式连编。
       warn_on - 编译器会输出尽可能多的警告信息。如果“warn_off”被指定,它将被忽略。
       warn_off - 编译器会输出尽可能少的警告信息。
    下面这些选项定义了所要连编的库/应用程序的类型:
      qt - 应用程序是一个Qt应用程序,并且Qt库将会被连接。
      thread - 应用程序是一个多线程应用程序。
      x11 - 应用程序是一个X11应用程序或库。
      windows - 只用于“app”模板:应用程序是一个Windows下的窗口应用程序。
      console - 只用于“app”模板:应用程序是一个Windows下的控制台应用程序。
      dll - 只用于“lib”模板:库是一个共享库(dll)。
      staticlib - 只用于“lib”模板:库是一个静态库。
      plugin - 只用于“lib”模板:库是一个插件,这将会使dll选项生效。
    例如,如果你的应用程序使用Qt库,并且你想把它连编为一个可调试的多线程的应用程序,你的项目文件应该会有下面这行:
          CONFIG += qt thread debug

    注意,你必须使用“+=”,不要使用“=”,否则qmake就不能正确使用连编Qt的设置了,比如没法获得所编译的Qt库的类型了。

  • 相关阅读:
    七夜在线音乐台开发 第二弹 (原创)
    七夜在线音乐台开发 第一弹 (原创)
    逆向某停车app(原创)
    (原创)python发送邮件
    申论(写作篇)之“人民时评”帮你写好作文
    行测(爆发篇)之片段阅读,不能只靠语感
    行测(爆发篇)之逻辑填空
    申论(写作篇)之文字表达能力提升
    申论(写作篇)之花木体申论写作法
    公考笔记整理(全)
  • 原文地址:https://www.cnblogs.com/IThaitian/p/2603918.html
Copyright © 2011-2022 走看看