zoukankan      html  css  js  c++  java
  • qmake-how to

    简单例子

    假设已经实现如下程序:

    hello.cpp
    hello.h
    main.cpp

    首先,使用编辑器,在上述文件目录下创建文件hello.pro.然后加入几行语句告诉qmake项目中的源文件和头文件。

    使用 SOURCES 变量 加入源文件,例如:

    SOURCES +=hello.cpp

    加入所有源文件

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

    也可以使用Make-like语法形式。如下:

    SOURCES = hello.cpp
              main.cpp

    加入头文件

    HEADERS += hello.h
    SOURCES +=hello.cpp
    SOURCES += main.cpp

    target 是自动设定的;就像project file 一样。但是不同的平台有不同的后缀。比如,如果project file 是 hello.pro,那么在Windows上target就是 hello.exe,而linux上则是 hello.如果使用不同的名称的话,可以这样设置project file:

    TARGET = helloworld

    设置 CONFIG变量的最后一步。由于是QT应用程序,必须把qt放入CONFIG中,这样qmake就会生成相应的链接库,并确保建立的moc和uic包含在生成的Makefile中。

    最终的project file应该像这样:

    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版本的应用程序不包含任何调试符号或者其他的调试信息。在开发过程中往往需要调试版本提供相关的信息。这个很容易实现,只要在CONFIG变量中加入debug

    例如:

    CONFIG += qt debug
    HEADERS += hello.h
    SOURCES += hello.cpp
    SOURCES += main.cpp

    像之前一样使用qmake产生Makefile,可以在debugging环境下,运行程序,得到有用的信息。

    加入特定平台的源文件

    在通过几个小时的编程后,有可能开始写特定平台部分,而且需要与其他代码独立分开。有两个新文件:hellowin.cpp和hellolinux.cpp.不能把它们都加入SOURCES变量中,这样两个文件都会在Makefile中。所以在运行qmake时,需要使用一个范围根据独立平台来处理。

    一个适用于windows的简单范围,如下:

    win32{
          SOURCES += hellowin.cpp  
    }

    如果qmake运行在Windows上,将hellowin.cpp加入到源文件列表中。如果qmake运行在其他平台上,就会被忽略。

    现在剩下的就是为Unix-specific 文件创建一个范围,如下:

    CONFIG += qt debug
    HEADERS += hello.h
    SOURCES += hello.cpp
    SOURCES += main.cpp
    win32 {
       SOURCES += hellowin.cpp
    }
    unix {
       SOURCES += hellounix.cpp
    }

    像之前一样使用qmake生成Makefile

    如果文件不存在停止qmake

    如果某些文件不存在,可能就不想创建Makefile.可以使用exists()函数来检查文件是否存在。使用error()函数来停止qmake.这和scopes的效果是一样的。简单的使用函数来代替scope 条件

    检查main.cpp是否存在,如下:

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

    !符号用来否定测试;例如,exists(main.cpp) 返回 true 则文件存在,如果 !exists(main.cpp)返回true,则文件不存在。

    CONFIG += qt 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")
    }

    像之前一样生成makefile,如果重命名main.cpp,将会看到一些信息并且qmake会停止。

    多条件检查

    假设使用Windows ,在命令行运行应用程序时,希望能看到qDebug()的声明输出。如果构建的应用程序没有合适的控制设置,就不能看到输出。只要在CONFIG中加入console,makefile中就会有设置。然而,如果debug已经加入了CONFIG中,想在运行时,加入console。需要使用嵌套范围,例如:

    win32 {
      debug {
        CONFIG +=console
    }
    }

    嵌套范围使用冒号连在一起,最终的项目如下:

    CONFIG += qt 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
    }
  • 相关阅读:
    python调用php函数
    api响应类
    php 利用socket发送GET,POST请求
    php的异常和处理
    predis操作大全
    PHP 实现HASH表
    PHP 实现Session入库/存入redis
    PHP下使用Redis消息队列发布微博
    jquery 仿163网易图片新闻幻灯片展示
    6种非常酷炫的jquery banner焦点图片幻灯片切换
  • 原文地址:https://www.cnblogs.com/is-smiling/p/3271785.html
Copyright © 2011-2022 走看看