zoukankan      html  css  js  c++  java
  • 加快QT工程编译速度(还可给Qt for Android设置)

    一、多核编译

    环境: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,编译也慢得令人发指。

    原文链接:http://blog.csdn.net/hsshh1988/article/details/52604196

    原文链接:http://blog.csdn.net/crlyn/article/details/52005606

    http://blog.csdn.net/caoshangpa/article/details/75204018

  • 相关阅读:
    [SCOI2016] 幸运数字
    [CF438E] 小朋友和二叉树
    【题解】[AHOI2013]作业
    【题解】CF940F Machine Learning
    【题解】CF1207E XOR Guessing
    【题解】CF1228D Complete Tripartite
    【题解】CF1290B Irreducible Anagrams
    【题解】[JSOI2007]字符加密
    【题解】[SDOI2016]征途
    【题解】多边形染色
  • 原文地址:https://www.cnblogs.com/findumars/p/7220069.html
Copyright © 2011-2022 走看看