有时使用使用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/