• 加快QT工程编译速度


    一、多核编译

    环境:win10, Qt 5.4.1,编译器mingw32

    项目: Qt for Android

    Qt Creator 在编译android项目时不支持预编译,默认cpu单核编译,工程稍大一点导致编译过程极其缓慢,影响效率。

    不过Qt Creator自带了多核编译工具支持,只是没有默认开启,需要自己在项目中进行配置才能生效。

    步骤如下【以本机和项目为例】:

    1.查看是否已经安装了jom工具:C:QtQt5.4.1ToolsQtCreatorinjom.exe

    2.项目添加参数-j 4【4是cpu的核数,我的是i5,只有四个核心】

    添加参数完毕后可以重新编译项目试试看,编译的时候可以打开任务管理器,能看到所有的cpu核心都能被充分利用。

    之前我的机器【cpu i5-4590/内存8G/机械硬盘】项目全部重编需要50多分钟,启用多核以后,只需要13分钟左右。

    PS.如果是编译器用的是ms的vc++,则只需要在.pro文件中添加 QMAKE_CXXFLAGS += /MP 即可。

    二、使用预编译头

    “用Qt写的程序编译比MFC慢”的说法是错误的。单位代码行数编译Qt远比MFC快得多,因为Qt库的头文件设计非常好,尽量都使用了前置声明,避免了头文件嵌套,几乎所有类都使用了公有类和私有类的设计,把没必要公开的声明放到私有头文件里,避免了编译时引入过多代码。而MFC没有这样的设计。
    至于大家感觉MFC快主要原因是MFC工程默认打开了编译预处理头文件(PCH),但是这是VC编译器的特性,所有C++程序都可以用,不是MFC特有,Qt也可以使用 PCH。
    方法很简单,在你的 .pro 文件中加入一行

    PRECOMPILED_HEADER = stable.h
    指定 Stable.h这个头文件作为编译预处理文件,MFC里这个文件一般叫stdafx.h。然后在 stable.h里 包含你所用到的所有 Qt 头文件,如果你用了很多qt的类可以直接包含所有
    比如 :
    #include <QtCore>
    #include <QtGui>
    这两个文件里又包含了几乎所有Qt常用类。不用担心,即使包含了所有头文件也没关系,有了PCH再多头文件也没影响。
    如果你还想编译再快点,可以在 .pro里加入下面一行
    QMAKE_CXXFLAGS += /MP
    指定/mp编译选项,编译器将使用并行编译,同时起多个编译进程并行编译不同的cpp
    而且QT这种引入PCH的方法比MFC的好,由于MFC的PCH选项是每个工程逐个指定的,很容易被某些人搞坏,我曾经无数次修复PCH问题,但是Qt的选项是写在.pro里的,写一次就永远不会错。
    MFC一旦弄坏了PCH,编译也慢得令人发指。
  • 相关阅读:
    cf round #421 div2 D. Mister B and PR Shifts
    cf round #421 div2 C. Mister B and Boring Game(trick)
    UVa 12716 GCD XOR
    cf 821E Okabe and El Psy Kongroo(矩阵快速幂)
    hdu 6109 数据分割(并查集+set)
    poj 2887 Big String(块状链表)
    hdu 6119 小小粉丝度度熊(区间双指针)
    hdu 6118 度度熊的交易计划(可行费用流)
    hdu 6015 Gameia(树上博弈)
    hdu 6096 String(AC自动机巧妙建图)
  • 原文地址:https://www.cnblogs.com/leoking01/p/13374780.html
Copyright © 2020-2023  润新知