zoukankan      html  css  js  c++  java
  • 翻译qmake文档(二) Getting Started

    翻译qmake文档 目录

     
          本教程教讲授qmake基础知识。这个手册里的其它专题包含更详细的使用qmke信息。
    从简单开始
         假设你已经完成了应用程序的基本实现,并且你创建了下边的文件:
        hello.cpp
        hello.h
        main.cpp
    qt分布的目录 examples/qmake/tutorial 中,你可以找到这些文件。你只需要知道的另一件事是这个程序的安装程序是用Qt写的。首先,用你最喜欢的文本编辑工具,在examples/qmake/tutorial目录下建立hello.pro文件,第一件你需要做的事就是要添加一些代码,告诉qmak
    哪些源文件和头文件是项目的一部分。
    我们先把源文件添加到项目中,想要这样做你需要使用SOURCES变量。只需要用SOURCES +=新起一行再把hello.cpp写它后边。写完后的效果是这样:
    SOURCES += hello.cpp
    我们把项目里的每一个源文件都重复这样做,直到我们以如下方式结束:
    
    SOURCES += hello.cpp
    SOURCES += main.cpp
    如果你喜欢使用Make-like语法,一口气列出所有的文件,你可以使用使用换行符,就像下边一样
    
    SOURCES = hello.cpp 
              main.cpp
    现在已经列出项目里所有的源文件,头文件也必需添加.添加头文件除了使用名称为HEADERS的变量外和添加源文件的方式是一样的。
    
        这样做后,你的项目文件看起来应该是这样的:
    
    HEADERS += hello.h
    SOURCES += hello.cpp
    SOURCES += main.cpp
    Target名称是自动设置的。它和项目名称是一样的,但会根据相关平台相添加后缀名,举个例子,如果这个项目文件叫hello.pro,这个目标在window平台上是hello.exe,在Unix平台上是hello。如果你想用不同的名字可以在项目文件里设置:
    
    TARGET = helloworld
    最后一步是设置CONFIG变量。因为这是Qt应用程序,我们需要把qt添加到CONFIG行,这样qmake会把相关的库连接,可以确保moc和uic构建行能包含到生成的Makefile里。
    完成的项目文件应该像下面一样:
     CONFIG += qt
     HEADERS += hello.h
     SOURCES += hello.cpp
     SOURCES += main.cpp
    现在你可以为你的应用程序用qmake生成Makefile,在命令行里你项目目录下,写入命令行:
    
    qmake -o Makefile hello.pro
    然后根据你用的编译器输入make或者nmake.
    
    对于使用Visual Studio用户,qmake也可以生成.dsp或者.vcproj,例如 :
    
    qmake -tp vc hello.pro
    可调试应用程序
    
         release版本的应用程序不包含任何debug符号和debug信息,开发期间给应用程序生成debug版本的相关信息是非常有用的。在项目文件里的CONFIG变量加上debug就可以轻松实现。
    
    例如:
    
     CONFIG += qt debug
     HEADERS += hello.h
     SOURCES += hello.cpp
     SOURCES += main.cpp
    像之前一样使用qmake生成makefile,当你在debug环境下运行应用程序的时候你会得到很有用的信息
     
    添加平台特有的源文件
         写几个小时的代码后,你也许会开始为你的应用程序编写特定平台的部分,并坚持对不同的平台编写不能的代码。现在你有两个新文件要包含到项目中:hellowin.cpp和hellounix.cpp。当我们想把这两个文件放到Makefile里,不能只把这些文件添加到SOURCES变量。所以,我们需要做的是根据qmake运行的当前平台用使用相应的作用域进行处理。
    将一个简单的作用域添加到依赖于windows平台的文件,就像下边这样:
    win32 {
         SOURCES += hellowin.cpp
     }
    所以如果qmake运行于window平台,它将把hellowin.cpp添加到源文件列表。如果qmake运行于其它平台,它会被简单的忽略。现在剩下需要做的事就是创建一个特定于Unix文件的作用域。
    
    当你做完这些,你的项目看起来应该是这样的:
    
     CONFIG += qt debug
     HEADERS += hello.h
     SOURCES += hello.cpp
     SOURCES += main.cpp
     win32 {
         SOURCES += hellowin.cpp
     }
     unix {
         SOURCES += hellounix.cpp
     }
    就像之前一个使用qt生成Makefile
    
    如果一个文件不存在,停止 qmake
    如果某个文件不存在,你也许不希望生成Makefile。我们可以用exists()方法检查一个文件是否存在。用error()方法我们可以停止正在运行的qmake.这和作用域的工作方式是一样的。用这个方法简单的替换作用域条件。像下面一样检查main.cpp文件:
    
    !exists( main.cpp ) {
        error( "No main.cpp file found" )
    }
    “!”是用来否定测试。像这样, exists(main.cpp)如果是ture那么这个文件存在,如果!exists(main.cpp)是ture那么这个文件不存在。
    
    
    
    CONFIG += debug
    HEADERS += hello.h
    SOURCES += hello.cpp
    SOURCES += main.cpp
    win32 {
        SOURCES += hellowin.cpp
    }
    unix {
        SOURCES += hellounix.cpp
    }
    !exists( main.cpp ) {
        error( "No main.cpp file found" )
    }
    像之前一样使用qmake生成makefile。如果你临时重命名main.cpp,你将看到错误信息,qmake也会停止运行
    
    多条件检查
    假设你使用windows系统,当你运行程序的时候,想在命令行里看到qDebug()语句输出。要想看到输出,你必需用适当的控制台设置构建你的应用程序。我们可以简单的把console加入到CONFIG行,window平台的makefile里包含这个设置。然而,假设我们只想运行在window平台时并且debug已经添加到CONFIG行时才把console添加CONFIG行。这需要两个嵌套的作用域。先创建一个作用域,在它里面再创建另一个。把需要处理的设置放在第二个作用域里,像这样:
    
    win32 {
        debug {
            CONFIG += console
        }
    }
    
    
    嵌套作用域可以使用冒号:连接在一起。最终的项目文件像下边一样:
    
    CONFIG += debug
    HEADERS += hello.h
    SOURCES += hello.cpp
    SOURCES += main.cpp
    win32 {
        SOURCES += hellowin.cpp
    }
    unix {
        SOURCES += hellounix.cpp
    }
    !exists( main.cpp ) {
        error( "No main.cpp file found" )
    }
    win32:debug {
        CONFIG += console
    }
    
    
    就是这样,你现在已经完成了qmake的教程,准备好开始为你的开发项目编写项目文件吧。

  • 相关阅读:
    (二)处理视频
    vim下多行注释与解注释
    (一)读取显示图片
    解决死锁的方法
    死锁、活锁和饿死的理解(转)
    C# winfrom 窗体的StartPosition 属性
    Show()和ShowDialog()
    WinForm应用程序之注册模块的设计与实现
    Epplus使用教程1(基本介绍)
    C#中操作txt,抛出“正由另一进程使用,因此该进程无法访问此文件”
  • 原文地址:https://www.cnblogs.com/li-peng/p/3980243.html
Copyright © 2011-2022 走看看