qmlls: add checkbox for generating qmlls ini files

Add a checkbox to the qmljseditingsettingspage that generates qmlls
ini files by default for new projects.

If this checkbox is checked, then initial CMake configurations (when
enabling a kit for a project) and reconfigurations (when pressing the
"Re-configure with Initial parameters"-button) will set
QT_QML_GENERATE_QMLLS_INI to ON if QT_QML_GENERATE_QMLLS_INI was not
set yet.

Fixes: QTCREATORBUG-30394
Change-Id: I58f89558d25ef107e501bd67702f26554bd6aeaa
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
Sami Shalayel
2024-03-14 16:36:38 +01:00
parent 403f5daf31
commit 1e3750c5be
3 changed files with 33 additions and 2 deletions

View File

@@ -94,6 +94,7 @@ const char CMAKE_BUILD_TYPE[] = "CMake.Build.Type";
const char CLEAR_SYSTEM_ENVIRONMENT_KEY[] = "CMake.Configure.ClearSystemEnvironment";
const char USER_ENVIRONMENT_CHANGES_KEY[] = "CMake.Configure.UserEnvironmentChanges";
const char BASE_ENVIRONMENT_KEY[] = "CMake.Configure.BaseEnvironment";
const char GENERATE_QMLLS_INI_SETTING[] = "J.QtQuick/QmlJSEditor.GenerateQmllsIniFiles";
namespace Internal {
@@ -606,6 +607,18 @@ void CMakeBuildSettingsWidget::updateInitialCMakeArguments()
{
CMakeConfig initialList = m_buildConfig->initialCMakeArguments.cmakeConfiguration();
// set QT_QML_GENERATE_QMLLS_INI if it is enabled via the settings checkbox and if its not part
// of the initial CMake arguments yet
if (Core::ICore::settings()->value(GENERATE_QMLLS_INI_SETTING).toBool()) {
if (std::none_of(
initialList.constBegin(), initialList.constEnd(), [](const CMakeConfigItem &item) {
return item.key == "QT_QML_GENERATE_QMLLS_INI";
})) {
initialList.append(
CMakeConfigItem("QT_QML_GENERATE_QMLLS_INI", CMakeConfigItem::BOOL, "ON"));
}
}
for (const CMakeConfigItem &ci : m_buildConfig->cmakeBuildSystem()->configurationChanges()) {
if (!ci.isInitial)
continue;
@@ -1544,6 +1557,11 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id)
if (qt && qt->isQmlDebuggingSupported())
cmd.addArg("-DCMAKE_CXX_FLAGS_INIT:STRING=%{" + QLatin1String(QT_QML_DEBUG_FLAG) + "}");
// QT_QML_GENERATE_QMLLS_INI, if enabled via the settings checkbox:
if (Core::ICore::settings()->value(GENERATE_QMLLS_INI_SETTING).toBool()) {
cmd.addArg("-DQT_QML_GENERATE_QMLLS_INI:BOOL=ON");
}
CMakeProject *cmakeProject = static_cast<CMakeProject *>(target->project());
configureEnv.setUserEnvironmentChanges(
getEnvironmentItemsFromCMakeConfigurePreset(cmakeProject, k));