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