代码之家  ›  专栏  ›  技术社区  ›  Kuba hasn't forgotten Monica

如果Qt是用ltcg构建的,如何有条件地启用ltcg?

  •  1
  • Kuba hasn't forgotten Monica  · 技术社区  · 7 年前

    找到MSIL.netmodule或使用/GL编译的模块;使用/LTCG重新启动link;将/LTCG添加到link命令行以提高链接器性能

    如果用Qt构建的项目也启用了ltcg,是否有方法有条件地为项目启用ltcg?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Kuba hasn't forgotten Monica    7 年前

    事实证明,用于构建每个Qt模块的配置选项保留在 QT.<module>.module_config <module> 是模块的名称,例如 core .

    核心 模块,我们可以将该模块中的选项转发到项目文件中,如下所示:

    contains(QT.core.module_config, ltcg) {
      CONFIG += ltcg
      msvc: QMAKE_LIBFLAGS *= /ltcg
    }
    

    这个 QMAKE_LIBFLAGS /ltcg 就像链接器一样。

    以下代码段用于查找这些变量:

    for(var, $$list($$enumerate_vars())) {
        value = $$eval($$var)
        contains(value, ltcg): message($$var = $$value)
    }