仅当Qt是使用ltcg构建的时,如何有条件地启用ltcg?

时间:2018-08-09 19:25:35

标签: c++ qt qmake link-time-optimization

有时使用使用ltcg编译的Qt构建qmake项目。由于Qt的ltcg构建设置不会自动传播到使用给定Qt安装的项目,因此MSVC链接器会浪费时间并发出以下警告:

  

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

是否有一种方法可以在项目Qt也启用ltcg的情况下有条件地为项目启用ltcg?

1 个答案:

答案 0 :(得分:1)

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

因此,鉴于每个Qt项目都使用core模块,我们可以按照以下方式将选项从该模块转发到我们的项目文件中:

core

Qt的配置系统缺少contains(QT.core.module_config, ltcg) { CONFIG += ltcg msvc: QMAKE_LIBFLAGS *= /ltcg } 选项-图书馆员抱怨缺少QMAKE_LIBFLAGS,就像链接程序一样。

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

/ltcg