zoukankan      html  css  js  c++  java
  • Qt项目管理(33个规则)

    2016-06-20 花莫弦 小小杂货铺LY

    一、qmake的介绍

        qmake是Trolltech公司创建的用来为不同的平台和编译器书写Makefile的工具。

        手写Makefile是比较困难并且容易出错的,尤其是需要给不同的平台和编译器组合写几个Makefile。使用qmake,开发者创建一个简单的“项目”文件并且运行qmake生成适当的Makefile。qmake会注意所有的编译器和平台的依赖性,可以把开发者解放出来只关心他们的代码。Trolltech公司使用qmake作为Qt库和Qt所提供的工具的主要连编工具。

        qmake也注意了Qt的特殊需求,可以自动的包含moc和uic的连编规则。

    Qmake 编译信息可以通过qmake.conf进行配置。

    二、pro、pri、prf、prl

        Qt的工程管理文件常用的主要分为pro、pri、prf、prl四种类型的文件,其中pro文件是主文件,另外三种都可以包含在pro文件中,他们的书写规则都遵循qmake的规则。

        1、prl链接文件,这个文件主要和生成与使用静态库密切相关。

        生成静态库时,我们需要使用 config += create_prl 配置,编译生成和库文件同名的 *.prl 文件;

        当工程的TEMPLATE为app时,会自动添加如下指令CONFIG += link_prl,在查找库文件的时候,会尝试找相应的 *.prl 文件进行链接。

        2、prf特征文件,这个文件主要标识编译特性,可以使用两种方式加载

        1)CONFIG += *prf;

        2)load(*prf)。

        3、pri配置文件,通常放置一些通用的配置信息,进行工程管理。

        4、pro工程管理文件,通常放置与具体工程相关的信息,以及进行层叠式模块的管理。

    三、qmake的规则简介

        1、使用 # 进行注释;

        2、模板变量告诉qmake为这个应用程序生成哪种makefile。

        例如 TEMPLATE = app 应用程序
        app -建立一个应用程序的makefile。

        lib - 建立一个库的makefile。
        vcapp - 建立一个应用程序的VisualStudio项目文件。
        vclib - 建立一个库的VisualStudio项目文件。
        subdirs -这是一个特殊的模板,创建层叠式子目录,进行工程管理。

    (eg:TEMPLATE = subdirs

         SUBDIRS += one

         SUBDIRS += two)

        3、指定生成的应用程序放置的目录  DESTDIR += ../bin ;

        4、指定生成的应用程序名 TARGET = pksystem (和pro文件名相同);

        5、配置信息,CONFIG用来告诉qmake关于应用程序的配置信息。

        例如CONFIG+= qt warn_on release,其中+=为追加,=为赋值,warn_on为qmake要把编译器设置为输出警告信息的,release部分告诉qmake应用程序必须被连编为一个发布的应用程序,此处可以使用debug替换。
        6、指定uic命令,将.ui文件转化成ui_*.h文件的存放的目录 UI_DIR += forms ;

        7、指定rcc命令,将.qrc文件转换成qrc_*.h文件的存放目录
        RCC_DIR += ../tmp ;

        8、指定moc命令,将含Q_OBJECT的头文件转换成标准.h文件的存放目录
        MOC_DIR += ../tmp ;

        9、指定目标文件(obj)的存放目录 OBJECTS_DIR += ../tmp ;

        10、程序编译时依赖的相关路径 DEPENDPATH += . forms include qrc sources ;

        11、头文件包含路径 INCLUDEPATH += . ;

        12、源文件编码方式 CODECFORSRC = GBK ;

        13、工程中包含的头文件 HEADERS += *.h ;

        14、工程中包含的源文件SOURCES += *.cpp ;
        15、工程中包含的.ui设计文件 FORMS += *.ui ;
        16、工程中包含的资源文件 RESOURCES += *.qrc ;

        17、LIBS += -L库路径 -l库名 ;

        18、定义编译选项,DEFINES += XX,在.h文件中就可以使用:#ifdefine xx;

        19、条件编译 (主要区分不同平台和release、debug版本)

        win32 {

        SOURCES += *.cpp

        }

        unix {

        SOURCES += *.cpp

        }

        !exists( main.cpp ) {

        error( “No main.cpp file found” )

        }

        win32:debug {

        CONFIG += console

        }

        CONFIG(debug, debug|release) {

    }

    (注:{必须放置在条件的同一行))

        20、message(信息);

        21、Include(*.pro/*.pri);

        22、Translations Qt语言国际化文件

        23、命令行(配置好Qt环境变量)qmake -project 生成pro文件(需要配置qmake.conf手动修改pro文件进行处理),qmake  *.pro生成makefile文件,nmake(区分编译器)编译即可;

        24、qmake -tp vc *.pro(-r)生成vs解决方案;

        25、qmake -spec macx-xcode *.pro 生成xcode工程文件;

        26、warn_off - 编译器会输出尽可能少的警告信息;

        27、QT += xml  加入Qt模块;

        28、INSTALLS + = target sources   指定安装路径;

        29、QMAKE_CXXFLAGS_WARN_ON C++编译器警告;

        30、QMAKE_CFLAGS_WARN_ON C编译器警告;

        31、W34100  unreferenced formal parameter ;

        32、W34189  local variable is initialized but not referenced;

        33、contains(config,thread)根据thread是否在config中进行编译。

    四、qmake编译选项

        1、qmake [options] files

        1)-help 列出qmake帮助信息;

        2)-o file 直接输出到文件file,如果这个选项没有指定, qmake将会尝试使用合适的文件名作为输出,这依赖于当前的运行模式。
        3)-d 列出qmake的调试信息;

        4)-Wall   qmake将会报告所有知道的警告信息。

    五、参考链接

        1、http://www.kuqin.com/qtdocument/qmake-manual-7.html

        2、https://msdn.microsoft.com/en-us/library/ysb0wexw.aspx

    http://mp.weixin.qq.com/s?__biz=MzI4NzIwMDQ3OA==&mid=2247483680&idx=1&sn=33844b0bfdb9cae3be8c2137f9e70d11&scene=23&srcid=0620axBP8kO6hzc03MHxqfNV#rd

  • 相关阅读:
    Linux命令-文件管理(四)
    Linux命令-文件管理(三)
    Linux命令-文件管理(二)
    Linux命令-文件管理(一)
    Nodejs环境搭建
    Python csv文件操作
    python数组定义
    python3+Opencv 搭建环境和基本操作
    Python String startswith() Method
    Upload a file with $.ajax to AWS S3 with a pre-signed url
  • 原文地址:https://www.cnblogs.com/findumars/p/5602073.html
Copyright © 2011-2022 走看看