summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorOrkun Tokdemir <orkun.tokdemir@qt.io>2023-03-21 18:18:46 +0100
committerBrad King <brad.king@kitware.com>2023-03-30 06:41:51 -0400
commit429a452705f5a3b7f9a46833aca6560393659cc2 (patch)
treeb8de404afbd748ba6746c2839e748d9cb79ba289 /Source
parent21f812e57c48166ec5529460182d6f266d0ee55e (diff)
downloadcmake-429a452705f5a3b7f9a46833aca6560393659cc2.tar.gz
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.cxx17
1 files changed, 16 insertions, 1 deletions
diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx
index 667e0f5560..ba4c4d84ed 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