From 5ac46d46ba666bd78d33255d60b0b2498600024a Mon Sep 17 00:00:00 2001 From: Burak Hancerli Date: Tue, 7 Feb 2023 18:11:42 +0100 Subject: [PATCH] QmlProjectManager: Disable Cmake Generation for Qt4MCU Task-number: QDS-7442 Change-Id: Ifc2239d5be7489e0fd7c5a778e5653d4266c0393 Reviewed-by: Aleksei German Reviewed-by: Reviewed-by: Thomas Hartmann Reviewed-by: Marco Bubke --- .../cmakegen/generatecmakelists.cpp | 63 ++++++++++--------- 1 file changed, 34 insertions(+), 29 deletions(-) diff --git a/src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.cpp b/src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.cpp index b239ca75ccc..19891463467 100644 --- a/src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.cpp +++ b/src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.cpp @@ -59,6 +59,16 @@ enum ProjectDirectoryError { const QString MENU_ITEM_GENERATE = QCoreApplication::translate("QmlDesigner::GenerateCmake", "Generate CMake Build Files..."); +const QmlBuildSystem *getBuildSystem() +{ + auto project = ProjectExplorer::SessionManager::startupProject(); + if (project && project->activeTarget() && project->activeTarget()->buildSystem()) { + return qobject_cast( + project->activeTarget()->buildSystem()); + } + return nullptr; +} + void generateMenuEntry(QObject *parent) { Core::ActionContainer *menu = Core::ActionManager::actionContainer(Core::Constants::M_FILE); @@ -83,9 +93,8 @@ void generateMenuEntry(QObject *parent) QObject::connect(ProjectExplorer::SessionManager::instance(), &ProjectExplorer::SessionManager::startupProjectChanged, [action]() { - auto qmlProject = qobject_cast( - ProjectExplorer::SessionManager::startupProject()); - action->setEnabled(qmlProject != nullptr); + if (auto buildSystem = getBuildSystem()) + action->setEnabled(!buildSystem->qtForMCUs()); }); } @@ -251,17 +260,15 @@ const QString projectEnvironmentVariable(const QString &key) { QString value = {}; - auto *target = ProjectExplorer::SessionManager::startupProject()->activeTarget(); - if (target && target->buildSystem()) { - auto buildSystem = qobject_cast(target->buildSystem()); - if (buildSystem) { - auto envItems = buildSystem->environment(); - auto confEnv = std::find_if(envItems.begin(), envItems.end(), - [key](NameValueItem &item){return item.name == key;}); - if (confEnv != envItems.end()) - value = confEnv->value; - } + if (auto buildSystem = getBuildSystem()) { + auto envItems = buildSystem->environment(); + auto confEnv = std::find_if(envItems.begin(), envItems.end(), [key](NameValueItem &item) { + return item.name == key; + }); + if (confEnv != envItems.end()) + value = confEnv->value; } + return value; } @@ -536,7 +543,6 @@ bool CmakeFileGenerator::includeFile(const FilePath &filePath) return !isFileBlacklisted(filePath.fileName()); } - bool CmakeFileGenerator::generateEntryPointFiles(const FilePath &dir) { const QString qtcontrolsConf = GenerateCmake::projectEnvironmentVariable(ENV_VARIABLE_CONTROLCONF); @@ -575,22 +581,19 @@ bool CmakeFileGenerator::generateMainCpp(const FilePath &dir) bool envHeaderOk = true; QString environment; - auto *target = ProjectExplorer::SessionManager::startupProject()->activeTarget(); - if (target && target->buildSystem()) { - auto buildSystem = qobject_cast(target->buildSystem()); - if (buildSystem) { - for (EnvironmentItem &envItem : buildSystem->environment()) { - QString key = envItem.name; - QString value = envItem.value; - if (isFileResource(value)) - value.prepend(":/"); - environment.append(QString(ENV_HEADER_VARIABLE_LINE).arg(key).arg(value)); - } - QString envHeaderContent = GenerateCmake::readTemplate(ENV_HEADER_TEMPLATE_PATH) - .arg(environment); - FilePath envHeaderPath = srcDir.pathAppended(FILENAME_ENV_HEADER); - envHeaderOk = m_fileQueue.queueFile(envHeaderPath, envHeaderContent); + + if (auto buildSystem = getBuildSystem()) { + for (EnvironmentItem &envItem : buildSystem->environment()) { + QString key = envItem.name; + QString value = envItem.value; + if (isFileResource(value)) + value.prepend(":/"); + environment.append(QString(ENV_HEADER_VARIABLE_LINE).arg(key).arg(value)); } + QString envHeaderContent = GenerateCmake::readTemplate(ENV_HEADER_TEMPLATE_PATH) + .arg(environment); + FilePath envHeaderPath = srcDir.pathAppended(FILENAME_ENV_HEADER); + envHeaderOk = m_fileQueue.queueFile(envHeaderPath, envHeaderContent); } return cppOk && pluginHeaderOk && envHeaderOk; @@ -613,6 +616,8 @@ bool CmakeFileGenerator::isFileResource(const QString &relativeFilePath) return false; } + + } //GenerateCmake } //QmlProjectManager