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



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

最佳答案

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

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

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

Qt的配置系统缺少QMAKE_LIBFLAGS选项-图书馆员抱怨链接器也缺少/ltcg

以下代码段用于查找这些变量:
for(var, $$list($$enumerate_vars())) {
    value = $$eval($$var)
    contains(value, ltcg): message($$var = $$value)
}

关于c++ - 仅当Qt是使用ltcg构建的时,如何有条件地启用ltcg?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51774448/

10-09 06:22