QbsProject: Fix set LangaugeVersion for newer standards

I have some products which export c++20, some c++17 (not yet ported) and
some which do not specify the language itself. And sometimes I end up
with too much errors from the code model, because it sets the language
to C++11 or C++17.

Also adapted the C language.

Change-Id: I0056c8d873191d49164c3e7f3e4fdb24ccc1fb9b
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Björn Schäpers
2020-12-06 21:45:54 +01:00
committed by Björn Schäpers
parent ca263cd44a
commit c422962709

View File

@@ -786,7 +786,9 @@ static void getExpandedCompilerFlags(QStringList &cFlags, QStringList &cxxFlags,
cFlags = cxxFlags = commonFlags; cFlags = cxxFlags = commonFlags;
const auto cxxLanguageVersion = arrayToStringList(getCppProp("cxxLanguageVersion")); const auto cxxLanguageVersion = arrayToStringList(getCppProp("cxxLanguageVersion"));
if (cxxLanguageVersion.contains("c++17")) if (cxxLanguageVersion.contains("c++20"))
cxxFlags << "-std=c++20";
else if (cxxLanguageVersion.contains("c++17"))
cxxFlags << "-std=c++17"; cxxFlags << "-std=c++17";
else if (cxxLanguageVersion.contains("c++14")) else if (cxxLanguageVersion.contains("c++14"))
cxxFlags << "-std=c++14"; cxxFlags << "-std=c++14";
@@ -805,7 +807,11 @@ static void getExpandedCompilerFlags(QStringList &cFlags, QStringList &cxxFlags,
cxxFlags << QLatin1String(enableRtti.toBool() ? "-frtti" : "-fno-rtti"); cxxFlags << QLatin1String(enableRtti.toBool() ? "-frtti" : "-fno-rtti");
const auto cLanguageVersion = arrayToStringList(getCppProp("cLanguageVersion")); const auto cLanguageVersion = arrayToStringList(getCppProp("cLanguageVersion"));
if (cLanguageVersion.contains("c11")) if (cLanguageVersion.contains("c18"))
cFlags << "-cstd=c18";
else if (cLanguageVersion.contains("c17"))
cFlags << "-std=c17";
else if (cLanguageVersion.contains("c11"))
cFlags << "-std=c11"; cFlags << "-std=c11";
else if (cLanguageVersion.contains("c99")) else if (cLanguageVersion.contains("c99"))
cFlags << "-std=c99"; cFlags << "-std=c99";