diff options
author | Orkun Tokdemir <orkun.tokdemir@qt.io> | 2023-03-21 17:18:46 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2023-03-30 10:41:51 (GMT) |
commit | 429a452705f5a3b7f9a46833aca6560393659cc2 (patch) | |
tree | b8de404afbd748ba6746c2839e748d9cb79ba289 /Source | |
parent | 21f812e57c48166ec5529460182d6f266d0ee55e (diff) | |
download | CMake-429a452705f5a3b7f9a46833aca6560393659cc2.zip CMake-429a452705f5a3b7f9a46833aca6560393659cc2.tar.gz CMake-429a452705f5a3b7f9a46833aca6560393659cc2.tar.bz2 |
Autogen: Add target's C++ standard to moc_predef.h
Generate `moc_predef.h` using the same C++ standard level that will be
used to compile the target so that the compiler's predefined macros can
be more accurately recovered.
Fixes: #24624
Qt-Issue: https://bugreports.qt.io/browse/QTBUG-110847
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmQtAutoGenInitializer.cxx | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx index 667e0f5..ba4c4d8 100644 --- a/Source/cmQtAutoGenInitializer.cxx +++ b/Source/cmQtAutoGenInitializer.cxx @@ -43,6 +43,7 @@ #include "cmSourceFile.h" #include "cmSourceFileLocationKind.h" #include "cmSourceGroup.h" +#include "cmStandardLevelResolver.h" #include "cmState.h" #include "cmStateTypes.h" #include "cmStringAlgorithms.h" @@ -1699,8 +1700,22 @@ bool cmQtAutoGenInitializer::SetupWriteAutogenInfo() jval[1u] = pair.second; }); info.SetConfig("MOC_COMPILATION_FILE", this->Moc.CompilationFile); - info.SetArray("MOC_PREDEFS_CMD", this->Moc.PredefsCmd); info.SetConfig("MOC_PREDEFS_FILE", this->Moc.PredefsFile); + + cmStandardLevelResolver resolver{ this->Makefile }; + auto CompileOptionFlag = + resolver.GetCompileOptionDef(this->GenTarget, "CXX", ""); + + auto CompileOptionValue = + this->GenTarget->Makefile->GetSafeDefinition(CompileOptionFlag); + + if (!CompileOptionValue.empty()) { + if (this->Moc.PredefsCmd.size() >= 3) { + this->Moc.PredefsCmd.insert(this->Moc.PredefsCmd.begin() + 1, + CompileOptionValue); + } + } + info.SetArray("MOC_PREDEFS_CMD", this->Moc.PredefsCmd); } // Write uic settings |