CMakePM: Transform a few raw C strings into constant literals

This way you can have code completion for the constant literals and not
do any accidental typos.

Change-Id: I1f9dc36327052fcda9575dddec909db93c4b225c
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Cristian Adam
2024-06-05 13:39:27 +02:00
parent e04c727043
commit 0fa8047f12

View File

@@ -97,6 +97,13 @@ const char USER_ENVIRONMENT_CHANGES_KEY[] = "CMake.Configure.UserEnvironmentChan
const char BASE_ENVIRONMENT_KEY[] = "CMake.Configure.BaseEnvironment"; const char BASE_ENVIRONMENT_KEY[] = "CMake.Configure.BaseEnvironment";
const char GENERATE_QMLLS_INI_SETTING[] = "J.QtQuick/QmlJSEditor.GenerateQmllsIniFiles"; const char GENERATE_QMLLS_INI_SETTING[] = "J.QtQuick/QmlJSEditor.GenerateQmllsIniFiles";
const char CMAKE_TOOLCHAIN_FILE[] = "CMAKE_TOOLCHAIN_FILE";
const char CMAKE_C_FLAGS_INIT[] = "CMAKE_C_FLAGS_INIT";
const char CMAKE_CXX_FLAGS_INIT[] = "CMAKE_CXX_FLAGS_INIT";
const char CMAKE_CXX_FLAGS[] = "CMAKE_CXX_FLAGS";
const char CMAKE_CXX_FLAGS_DEBUG[] = "CMAKE_CXX_FLAGS_DEBUG";
const char CMAKE_CXX_FLAGS_RELWITHDEBINFO[] = "CMAKE_CXX_FLAGS_RELWITHDEBINFO";
namespace Internal { namespace Internal {
class CMakeBuildSettingsWidget : public NamedWidget class CMakeBuildSettingsWidget : public NamedWidget
@@ -889,11 +896,11 @@ CMakeConfig CMakeBuildSettingsWidget::getQmlDebugCxxFlags()
const bool enable = m_buildConfig->qmlDebugging() == TriState::Enabled; const bool enable = m_buildConfig->qmlDebugging() == TriState::Enabled;
const CMakeConfig configList = m_buildConfig->cmakeBuildSystem()->configurationFromCMake(); const CMakeConfig configList = m_buildConfig->cmakeBuildSystem()->configurationFromCMake();
const QByteArrayList cxxFlagsPrev{"CMAKE_CXX_FLAGS", const QByteArrayList cxxFlagsPrev{CMAKE_CXX_FLAGS,
"CMAKE_CXX_FLAGS_DEBUG", CMAKE_CXX_FLAGS_DEBUG,
"CMAKE_CXX_FLAGS_RELWITHDEBINFO", CMAKE_CXX_FLAGS_RELWITHDEBINFO,
"CMAKE_CXX_FLAGS_INIT"}; CMAKE_CXX_FLAGS_INIT};
const QByteArrayList cxxFlags{"CMAKE_CXX_FLAGS_INIT", "CMAKE_CXX_FLAGS"}; const QByteArrayList cxxFlags{CMAKE_CXX_FLAGS_INIT, CMAKE_CXX_FLAGS};
const QByteArray qmlDebug(QT_QML_DEBUG_PARAM); const QByteArray qmlDebug(QT_QML_DEBUG_PARAM);
CMakeConfig changedConfig; CMakeConfig changedConfig;
@@ -1182,14 +1189,14 @@ static CommandLine defaultInitialCMakeCommand(
if (auto *gccTc = tc->asGccToolchain()) { if (auto *gccTc = tc->asGccToolchain()) {
const QStringList compilerFlags = gccTc->platformCodeGenFlags(); const QStringList compilerFlags = gccTc->platformCodeGenFlags();
QString language; QLatin1String languageFlagsInit;
if (gccTc->language() == ProjectExplorer::Constants::C_LANGUAGE_ID) if (gccTc->language() == ProjectExplorer::Constants::C_LANGUAGE_ID)
language = "C"; languageFlagsInit = QLatin1String(CMAKE_C_FLAGS_INIT);
else if (gccTc->language() == ProjectExplorer::Constants::CXX_LANGUAGE_ID) else if (gccTc->language() == ProjectExplorer::Constants::CXX_LANGUAGE_ID)
language = "CXX"; languageFlagsInit = QLatin1String(CMAKE_CXX_FLAGS_INIT);
if (!language.isEmpty() && !compilerFlags.isEmpty()) if (!languageFlagsInit.isEmpty() && !compilerFlags.isEmpty())
cmd.addArg("-DCMAKE_" + language + "_FLAGS_INIT:STRING=" + compilerFlags.join(" ")); cmd.addArg("-D" + languageFlagsInit + ":STRING=" + compilerFlags.join(" "));
const QStringList linkerFlags = gccTc->platformLinkerFlags(); const QStringList linkerFlags = gccTc->platformLinkerFlags();
if (!linkerFlags.isEmpty()) { if (!linkerFlags.isEmpty()) {
@@ -1342,14 +1349,14 @@ static void addCMakeConfigurePresetToInitialArguments(QStringList &initialArgume
} }
arg = argItem.toArgument(); arg = argItem.toArgument();
} else if (argItem.key == "CMAKE_TOOLCHAIN_FILE") { } else if (argItem.key == CMAKE_TOOLCHAIN_FILE) {
const FilePath argFilePath = FilePath::fromString(argItem.expandedValue(k)); const FilePath argFilePath = FilePath::fromString(argItem.expandedValue(k));
const FilePath presetFilePath = FilePath::fromUserInput( const FilePath presetFilePath = FilePath::fromUserInput(
QString::fromUtf8(presetItem.value)); QString::fromUtf8(presetItem.value));
if (argFilePath != presetFilePath) if (argFilePath != presetFilePath)
arg = presetItem.toArgument(); arg = presetItem.toArgument();
} else if (argItem.key == "CMAKE_CXX_FLAGS_INIT") { } else if (argItem.key == CMAKE_CXX_FLAGS_INIT) {
// Append the preset value with at the initial parameters value (e.g. QML Debugging) // Append the preset value with at the initial parameters value (e.g. QML Debugging)
if (argItem.expandedValue(k) != QString::fromUtf8(presetItem.value)) { if (argItem.expandedValue(k) != QString::fromUtf8(presetItem.value)) {
argItem.value.append(" "); argItem.value.append(" ");
@@ -1618,7 +1625,8 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id)
: TriState::Default); : TriState::Default);
if (qt && qt->isQmlDebuggingSupported()) if (qt && qt->isQmlDebuggingSupported())
cmd.addArg("-DCMAKE_CXX_FLAGS_INIT:STRING=%{" + QLatin1String(QT_QML_DEBUG_FLAG) + "}"); cmd.addArg(
QLatin1String("-D") + CMAKE_CXX_FLAGS_INIT + ":STRING=%{" + QT_QML_DEBUG_FLAG + "}");
// QT_QML_GENERATE_QMLLS_INI, if enabled via the settings checkbox: // QT_QML_GENERATE_QMLLS_INI, if enabled via the settings checkbox:
if (Core::ICore::settings()->value(GENERATE_QMLLS_INI_SETTING).toBool()) { if (Core::ICore::settings()->value(GENERATE_QMLLS_INI_SETTING).toBool()) {
@@ -1679,8 +1687,8 @@ bool CMakeBuildConfiguration::hasQmlDebugging(const CMakeConfig &config)
// Determine QML debugging flags. This must match what we do in // Determine QML debugging flags. This must match what we do in
// CMakeBuildSettingsWidget::getQmlDebugCxxFlags() // CMakeBuildSettingsWidget::getQmlDebugCxxFlags()
// such that in doubt we leave the QML Debugging setting at "Leave at default" // such that in doubt we leave the QML Debugging setting at "Leave at default"
const QString cxxFlagsInit = config.stringValueOf("CMAKE_CXX_FLAGS_INIT"); const QString cxxFlagsInit = config.stringValueOf(CMAKE_CXX_FLAGS_INIT);
const QString cxxFlags = config.stringValueOf("CMAKE_CXX_FLAGS"); const QString cxxFlags = config.stringValueOf(CMAKE_CXX_FLAGS);
return cxxFlagsInit.contains(QT_QML_DEBUG_PARAM) && cxxFlags.contains(QT_QML_DEBUG_PARAM); return cxxFlagsInit.contains(QT_QML_DEBUG_PARAM) && cxxFlags.contains(QT_QML_DEBUG_PARAM);
} }