diff options
Diffstat (limited to 'src/plugins')
53 files changed, 263 insertions, 358 deletions
diff --git a/src/plugins/autotest/autotestplugin.cpp b/src/plugins/autotest/autotestplugin.cpp index ff2afa7ee83..b30c0af001a 100644 --- a/src/plugins/autotest/autotestplugin.cpp +++ b/src/plugins/autotest/autotestplugin.cpp @@ -419,15 +419,13 @@ TestFrameworks activeTestFrameworks() void updateMenuItemsEnabledState() { const Project *project = ProjectManager::startupProject(); - const Target *target = project ? project->activeTarget() : nullptr; const bool disabled = dd->m_testCodeParser.state() == TestCodeParser::DisabledTemporarily; const bool canScan = disabled || (!dd->m_testRunner.isTestRunning() && dd->m_testCodeParser.state() == TestCodeParser::Idle); const bool hasTests = dd->m_testTreeModel.hasTests(); // avoid expensive call to PE::canRunStartupProject() - limit to minimum necessary checks const bool canRun = !disabled && hasTests && canScan - && project && !project->needsConfiguration() - && target && target->activeRunConfiguration() + && project && !project->needsConfiguration() && project->activeRunConfiguration() && !BuildManager::isBuilding(); const bool canRunFailed = canRun && dd->m_testTreeModel.hasFailedTests(); diff --git a/src/plugins/autotest/testconfiguration.cpp b/src/plugins/autotest/testconfiguration.cpp index a2579bf74ae..1d77e8ab76d 100644 --- a/src/plugins/autotest/testconfiguration.cpp +++ b/src/plugins/autotest/testconfiguration.cpp @@ -130,7 +130,7 @@ void TestConfiguration::completeTestInformation(RunConfiguration *rc, m_runnable.command.setExecutable(ensureExeEnding(targetInfo.targetFilePath)); FilePath buildBase; - if (auto buildConfig = target->activeBuildConfiguration()) { + if (auto buildConfig = startupProject->activeBuildConfiguration()) { buildBase = buildConfig->buildDirectory(); const FilePath projBase = startupProject->projectDirectory(); if (m_projectFile.isChildOf(projBase)) { @@ -167,14 +167,15 @@ void TestConfiguration::completeTestInformation(TestRunMode runMode) Target *target = startupProject->activeTarget(); if (!target) return; - qCDebug(LOG) << "ActiveTargetName\n " << target->displayName(); - if (const auto kit = target->kit()) + if (const auto kit = startupProject->activeKit()) { + qCDebug(LOG) << "ActiveTargetName\n " << kit->displayName(); qCDebug(LOG) << "SupportedPlatforms\n " << kit->supportedPlatforms(); + } const QSet<QString> buildSystemTargets = m_buildTargets; qCDebug(LOG) << "BuildSystemTargets\n " << buildSystemTargets; const QList<BuildTargetInfo> buildTargets - = Utils::filtered(target->buildSystem()->applicationTargets(), + = Utils::filtered(startupProject->activeBuildSystem()->applicationTargets(), [&buildSystemTargets](const BuildTargetInfo &bti) { return buildSystemTargets.contains(bti.buildKey); }); @@ -184,7 +185,7 @@ void TestConfiguration::completeTestInformation(TestRunMode runMode) BuildTargetInfo targetInfo = buildTargets.size() ? buildTargets.first() : BuildTargetInfo(); - if (RunDeviceTypeKitAspect::deviceTypeId(target->kit()) == ANDROID_DEVICE_TYPE) { + if (RunDeviceTypeKitAspect::deviceTypeId(startupProject->activeKit()) == ANDROID_DEVICE_TYPE) { // Android can have test runner scripts named as displayName(.bat) const FilePath script = ensureBatEnding( targetInfo.targetFilePath.parentDir() / targetInfo.displayName); @@ -206,7 +207,7 @@ void TestConfiguration::completeTestInformation(TestRunMode runMode) return; FilePath buildBase; - if (auto buildConfig = target->activeBuildConfiguration()) { + if (auto buildConfig = startupProject->activeBuildConfiguration()) { buildBase = buildConfig->buildDirectory(); const FilePath projBase = startupProject->projectDirectory(); if (m_projectFile.isChildOf(projBase)) { diff --git a/src/plugins/autotest/testrunner.cpp b/src/plugins/autotest/testrunner.cpp index 0c9090c3978..6546451ce12 100644 --- a/src/plugins/autotest/testrunner.cpp +++ b/src/plugins/autotest/testrunner.cpp @@ -563,8 +563,8 @@ void TestRunner::debugTests() debugger->runParameters().setDisplayName(config->displayName()); bool useOutputProcessor = true; - if (Target *targ = config->project()->activeTarget()) { - if (Debugger::DebuggerKitAspect::engineType(targ->kit()) == Debugger::CdbEngineType) { + if (Kit *kit = config->project()->activeKit()) { + if (Debugger::DebuggerKitAspect::engineType(kit) == Debugger::CdbEngineType) { reportResult(ResultType::MessageWarn, Tr::tr("Unable to display test results when using CDB.")); useOutputProcessor = false; diff --git a/src/plugins/clangcodemodel/clangdclient.cpp b/src/plugins/clangcodemodel/clangdclient.cpp index 864d00901dd..0fb6882f17e 100644 --- a/src/plugins/clangcodemodel/clangdclient.cpp +++ b/src/plugins/clangcodemodel/clangdclient.cpp @@ -169,11 +169,9 @@ std::optional<Utils::FilePath> clangdExecutableFromBuildDevice(Project *project) if (!project) return std::nullopt; - if (ProjectExplorer::Target *target = project->activeTarget()) { - if (const ProjectExplorer::IDeviceConstPtr buildDevice = BuildDeviceKitAspect::device( - target->kit())) { - return buildDevice->clangdExecutable(); - } + if (const ProjectExplorer::IDeviceConstPtr buildDevice = BuildDeviceKitAspect::device( + project->activeKit())) { + return buildDevice->clangdExecutable(); } return std::nullopt; diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp index ace76461d85..5ce8b3a93f0 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp @@ -139,11 +139,9 @@ static const QList<Project *> projectsForClient(const Client *client) static bool fileIsProjectBuildArtifact(const Client *client, const FilePath &filePath) { for (const Project * const p : projectsForClient(client)) { - if (const auto t = p->activeTarget()) { - if (const auto bc = t->activeBuildConfiguration()) { - if (filePath.isChildOf(bc->buildDirectory())) - return true; - } + if (const auto bc = p->activeBuildConfiguration()) { + if (filePath.isChildOf(bc->buildDirectory())) + return true; } } return false; @@ -210,8 +208,7 @@ static void updateParserConfig(ClangdClient *client) static bool projectIsParsing(const ClangdClient *client) { for (const Project * const p : projectsForClient(client)) { - const BuildSystem * const bs = p && p->activeTarget() - ? p->activeTarget()->buildSystem() : nullptr; + const BuildSystem * const bs = p ? p->activeBuildSystem() : nullptr; if (bs && (bs->isParsing() || bs->isWaitingForParse())) return true; } @@ -475,11 +472,9 @@ static FilePath getJsonDbDir(Project *project) { if (!project) return ClangdSettings::instance().sessionIndexPath(*globalMacroExpander()); - if (const Target *const target = project->activeTarget()) { - if (const BuildConfiguration *const bc = target->activeBuildConfiguration()) { - return ClangdSettings(ClangdProjectSettings(project).settings()) - .projectIndexPath(*bc->macroExpander()); - } + if (const BuildConfiguration *const bc = project->activeBuildConfiguration()) { + return ClangdSettings(ClangdProjectSettings(project).settings()) + .projectIndexPath(*bc->macroExpander()); } return {}; } diff --git a/src/plugins/clangtools/clangtool.cpp b/src/plugins/clangtools/clangtool.cpp index 5ca9f0816a6..acd30e5ece7 100644 --- a/src/plugins/clangtools/clangtool.cpp +++ b/src/plugins/clangtools/clangtool.cpp @@ -841,7 +841,7 @@ void ClangTool::startTool(FileSelection fileSelection, const RunSettings &runSet QTC_ASSERT(project->activeTarget(), return); // Continue despite release mode? - if (BuildConfiguration *bc = project->activeTarget()->activeBuildConfiguration()) { + if (BuildConfiguration *bc = project->activeBuildConfiguration()) { if (bc->buildType() == BuildConfiguration::Release) if (!continueDespiteReleaseBuild(m_name)) return; @@ -1032,16 +1032,13 @@ void ClangTool::reset() static bool canAnalyzeProject(Project *project) { - if (const Target *target = project->activeTarget()) { - const Id c = ProjectExplorer::Constants::C_LANGUAGE_ID; - const Id cxx = ProjectExplorer::Constants::CXX_LANGUAGE_ID; - const bool projectSupportsLanguage = project->projectLanguages().contains(c) - || project->projectLanguages().contains(cxx); - return projectSupportsLanguage - && CppModelManager::projectInfo(project) - && ToolchainKitAspect::cxxToolchain(target->kit()); - } - return false; + const Id c = ProjectExplorer::Constants::C_LANGUAGE_ID; + const Id cxx = ProjectExplorer::Constants::CXX_LANGUAGE_ID; + const bool projectSupportsLanguage = project->projectLanguages().contains(c) + || project->projectLanguages().contains(cxx); + return projectSupportsLanguage + && CppModelManager::projectInfo(project) + && ToolchainKitAspect::cxxToolchain(project->activeKit()); } struct CheckResult { diff --git a/src/plugins/clangtools/documentclangtoolrunner.cpp b/src/plugins/clangtools/documentclangtoolrunner.cpp index 093df0ab7b0..c1847e71e63 100644 --- a/src/plugins/clangtools/documentclangtoolrunner.cpp +++ b/src/plugins/clangtools/documentclangtoolrunner.cpp @@ -148,10 +148,8 @@ static FileInfo getFileInfo(const FilePath &file, Project *project) static Environment projectBuildEnvironment(Project *project) { Environment env; - if (Target *target = project->activeTarget()) { - if (BuildConfiguration *buildConfig = target->activeBuildConfiguration()) - env = buildConfig->environment(); - } + if (BuildConfiguration *buildConfig = project->activeBuildConfiguration()) + env = buildConfig->environment(); if (!env.hasChanges()) env = Environment::systemEnvironment(); return env; diff --git a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp index 72831a4c37e..2ab1a931c38 100644 --- a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp @@ -42,10 +42,9 @@ static LocatorMatcherTasks cmakeMatchers(const BuildAcceptor &acceptor) const QList<Project *> projects = ProjectManager::projects(); for (Project *project : projects) { const auto cmakeProject = qobject_cast<const CMakeProject *>(project); - if (!cmakeProject || !cmakeProject->activeTarget()) + if (!cmakeProject) continue; - const auto bs = qobject_cast<CMakeBuildSystem *>( - cmakeProject->activeTarget()->buildSystem()); + const auto bs = qobject_cast<CMakeBuildSystem *>(cmakeProject->activeBuildSystem()); if (!bs) continue; diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp index 0f137a4cdc7..91fdee79208 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp @@ -421,10 +421,7 @@ void CMakeManager::enableBuildFileMenus(Node *node) Project *project = ProjectTree::projectForNode(node); if (!project) return; - Target *target = project->activeTarget(); - if (!target) - return; - const QString generator = CMakeGeneratorKitAspect::generator(target->kit()); + const QString generator = CMakeGeneratorKitAspect::generator(project->activeKit()); if (generator != "Ninja" && !generator.contains("Makefiles")) return; @@ -630,12 +627,10 @@ void CMakeManager::buildFile(Node *node) if (wasHeader && !sourceFile.isEmpty()) filePath = sourceFile; } - Target *target = project->activeTarget(); - QTC_ASSERT(target, return); - const QString generator = CMakeGeneratorKitAspect::generator(target->kit()); + const QString generator = CMakeGeneratorKitAspect::generator(project->activeKit()); const FilePath relativeSource = filePath.relativeChildPath(targetNode->filePath()); Utils::FilePath targetBase; - BuildConfiguration *bc = target->activeBuildConfiguration(); + BuildConfiguration *bc = project->activeBuildConfiguration(); QTC_ASSERT(bc, return); if (generator == "Ninja") { const Utils::FilePath relativeBuildDir = targetNode->buildDirectory().relativeChildPath( @@ -659,8 +654,8 @@ void CMakeManager::buildFile(Node *node) return extension; const auto toolchain = ProjectFile::isCxx(sourceKind) - ? ToolchainKitAspect::cxxToolchain(target->kit()) - : ToolchainKitAspect::cToolchain(target->kit()); + ? ToolchainKitAspect::cxxToolchain(project->activeKit()) + : ToolchainKitAspect::cToolchain(project->activeKit()); using namespace ProjectExplorer::Constants; static QSet<Id> objIds{ CLANG_CL_TOOLCHAIN_TYPEID, diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp index 5fc619d6ffc..436f58e7d61 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp @@ -280,10 +280,8 @@ std::optional<FilePath> CMakeTargetNode::visibleAfterAddFileAction() const void CMakeTargetNode::build() { - Project *p = getProject(); - Target *t = p ? p->activeTarget() : nullptr; - if (t) - static_cast<CMakeBuildSystem *>(t->buildSystem())->buildCMakeTarget(displayName()); + if (Project *p = getProject(); p && p->activeBuildSystem()) + static_cast<CMakeBuildSystem *>(p->activeBuildSystem())->buildCMakeTarget(displayName()); } void CMakeTargetNode::setTargetInformation(const QList<FilePath> &artifacts, const QString &type) diff --git a/src/plugins/coco/cocoprojectsettingswidget.cpp b/src/plugins/coco/cocoprojectsettingswidget.cpp index c7121cb22ff..5a056a2dfd6 100644 --- a/src/plugins/coco/cocoprojectsettingswidget.cpp +++ b/src/plugins/coco/cocoprojectsettingswidget.cpp @@ -33,9 +33,7 @@ public: setGlobalSettingsId(Constants::COCO_SETTINGS_PAGE_ID); auto layout = new QVBoxLayout; - if (auto *target = project->activeTarget()) { - auto abc = target->activeBuildConfiguration(); - + if (auto *abc = project->activeBuildConfiguration()) { if (abc->id() == QmakeProjectManager::Constants::QMAKE_BC_ID || abc->id() == CMakeProjectManager::Constants::CMAKE_BUILDCONFIGURATION_ID) layout->addWidget(new CocoProjectWidget(project, abc)); @@ -52,10 +50,8 @@ public: setPriority(50); setDisplayName(Tr::tr("Coco Code Coverage")); setSupportsFunction([](Project *project) { - if (Target *target = project->activeTarget()) { - if (BuildConfiguration *abc = target->activeBuildConfiguration()) - return BuildSettings::supportsBuildConfig(*abc); - } + if (BuildConfiguration *abc = project->activeBuildConfiguration()) + return BuildSettings::supportsBuildConfig(*abc); return false; }); setCreateWidgetFunction( diff --git a/src/plugins/cppeditor/cppeditorwidget.cpp b/src/plugins/cppeditor/cppeditorwidget.cpp index e2bd2ef93e5..03d8e295324 100644 --- a/src/plugins/cppeditor/cppeditorwidget.cpp +++ b/src/plugins/cppeditor/cppeditorwidget.cpp @@ -782,10 +782,8 @@ void CppEditorWidget::showRenameWarningIfFileIsGenerated(const Utils::FilePath & "This is normally not a good idea, as the file will likely get " "overwritten during the build process.") .arg(filePath.toUserOutput()); - if (const Target * const target = project->activeTarget()) { - if (const BuildSystem * const bs = target->buildSystem()) - ec = bs->extraCompilerForTarget(filePath); - } + if (const BuildSystem * const bs = project->activeBuildSystem()) + ec = bs->extraCompilerForTarget(filePath); if (ec) { warning.append('\n').append(CppEditor::Tr::tr( "Do you want to edit \"%1\" instead?") diff --git a/src/plugins/cppeditor/cppmodelmanager.cpp b/src/plugins/cppeditor/cppmodelmanager.cpp index 0e9f344ed1e..8ce2cb6f3e3 100644 --- a/src/plugins/cppeditor/cppmodelmanager.cpp +++ b/src/plugins/cppeditor/cppmodelmanager.cpp @@ -416,8 +416,7 @@ void CppModelManager::showPreprocessedFile(bool inNextSplit) } const Project * const project = ProjectTree::currentProject(); - if (!project || !project->activeTarget() - || !project->activeTarget()->activeBuildConfiguration()) { + if (!project || !project->activeBuildConfiguration()) { showFallbackWarning(Tr::tr("Could not determine which compiler to invoke.")); useBuiltinPreprocessor(); return; @@ -426,9 +425,9 @@ void CppModelManager::showPreprocessedFile(bool inNextSplit) const Toolchain * tc = nullptr; const ProjectFile classifier(filePath, ProjectFile::classify(filePath.toUrlishString())); if (classifier.isC()) { - tc = ToolchainKitAspect::cToolchain(project->activeTarget()->kit()); + tc = ToolchainKitAspect::cToolchain(project->activeKit()); } else if (classifier.isCxx() || classifier.isHeader()) { - tc = ToolchainKitAspect::cxxToolchain(project->activeTarget()->kit()); + tc = ToolchainKitAspect::cxxToolchain(project->activeKit()); } else { showFallbackWarning(Tr::tr("Could not determine which compiler to invoke.")); useBuiltinPreprocessor(); @@ -468,7 +467,7 @@ void CppModelManager::showPreprocessedFile(bool inNextSplit) const CommandLine compilerCommandLine(tc->compilerCommand(), compilerArgs); const auto compiler = new Process(instance()); compiler->setCommand(compilerCommandLine); - compiler->setEnvironment(project->activeTarget()->activeBuildConfiguration()->environment()); + compiler->setEnvironment(project->activeBuildConfiguration()->environment()); connect(compiler, &Process::done, instance(), [compiler, outFilePath, inNextSplit, useBuiltinPreprocessor, isMsvc] { compiler->deleteLater(); diff --git a/src/plugins/debugger/unstartedappwatcherdialog.cpp b/src/plugins/debugger/unstartedappwatcherdialog.cpp index ff8482b9daa..3509ab2e02b 100644 --- a/src/plugins/debugger/unstartedappwatcherdialog.cpp +++ b/src/plugins/debugger/unstartedappwatcherdialog.cpp @@ -82,8 +82,7 @@ UnstartedAppWatcherDialog::UnstartedAppWatcherDialog(std::optional<QPoint> pos, m_kitChooser->setVisible(true); Project *project = ProjectTree::currentProject(); - Target *activeTarget = project ? project->activeTarget() : nullptr; - Kit *kit = activeTarget ? activeTarget->kit() : nullptr; + Kit *kit = project ? project->activeKit() : nullptr; if (kit) m_kitChooser->setCurrentKitId(kit->id()); @@ -100,15 +99,13 @@ UnstartedAppWatcherDialog::UnstartedAppWatcherDialog(std::optional<QPoint> pos, resetExecutable->setEnabled(false); pathLayout->addWidget(m_pathChooser); pathLayout->addWidget(resetExecutable); - if (activeTarget) { - if (RunConfiguration *runConfig = activeTarget->activeRunConfiguration()) { - const ProcessRunData runnable = runConfig->runnable(); - if (isLocal(runConfig)) { - resetExecutable->setEnabled(true); - connect(resetExecutable, &QPushButton::clicked, this, [this, runnable] { - m_pathChooser->setFilePath(runnable.command.executable()); - }); - } + if (RunConfiguration *runConfig = project->activeRunConfiguration()) { + const ProcessRunData runnable = runConfig->runnable(); + if (isLocal(runConfig)) { + resetExecutable->setEnabled(true); + connect(resetExecutable, &QPushButton::clicked, this, [this, runnable] { + m_pathChooser->setFilePath(runnable.command.executable()); + }); } } @@ -179,10 +176,8 @@ void UnstartedAppWatcherDialog::selectExecutable() Utils::FilePath path; Project *project = ProjectTree::currentProject(); - Target *activeTarget = project ? project->activeTarget() : nullptr; - - if (activeTarget) { - if (RunConfiguration *runConfig = activeTarget->activeRunConfiguration()) { + if (project) { + if (RunConfiguration *runConfig = project->activeRunConfiguration()) { const ProcessRunData runnable = runConfig->runnable(); if (isLocal(runConfig)) path = runnable.command.executable().parentDir(); @@ -190,8 +185,8 @@ void UnstartedAppWatcherDialog::selectExecutable() } if (path.isEmpty()) { - if (activeTarget && activeTarget->activeBuildConfiguration()) - path = activeTarget->activeBuildConfiguration()->buildDirectory(); + if (project && project->activeBuildConfiguration()) + path = project->activeBuildConfiguration()->buildDirectory(); else if (project) path = project->projectDirectory(); } diff --git a/src/plugins/designer/codemodelhelpers.cpp b/src/plugins/designer/codemodelhelpers.cpp index f58c3f65fb7..7510d729af6 100644 --- a/src/plugins/designer/codemodelhelpers.cpp +++ b/src/plugins/designer/codemodelhelpers.cpp @@ -31,12 +31,10 @@ static const char setupUiC[] = "setupUi"; static FilePath generatedHeaderOf(const FilePath &uiFileName) { if (const Project *uiProject = ProjectManager::projectForFile(uiFileName)) { - if (Target *t = uiProject->activeTarget()) { - if (BuildSystem *bs = t->buildSystem()) { - FilePaths files = bs->filesGeneratedFrom(uiFileName); - if (!files.isEmpty()) // There should be at most one header generated from a .ui - return files.front(); - } + if (BuildSystem *bs = uiProject->activeBuildSystem()) { + FilePaths files = bs->filesGeneratedFrom(uiFileName); + if (!files.isEmpty()) // There should be at most one header generated from a .ui + return files.front(); } } return {}; diff --git a/src/plugins/designer/qtcreatorintegration.cpp b/src/plugins/designer/qtcreatorintegration.cpp index 1c28dd415f9..d122ca60265 100644 --- a/src/plugins/designer/qtcreatorintegration.cpp +++ b/src/plugins/designer/qtcreatorintegration.cpp @@ -94,11 +94,9 @@ static void reportRenamingError(const QString &oldName, const QString &reason) static std::optional<QVersionNumber> qtVersionFromProject(const Project *project) { - if (const auto *target = project->activeTarget()) { - if (const auto *kit = target->kit(); kit->isValid()) { - if (const auto *qtVersion = QtSupport::QtKitAspect::qtVersion(kit)) - return qtVersion->qtVersion(); - } + if (const auto *kit = project->activeKit(); kit->isValid()) { + if (const auto *qtVersion = QtSupport::QtKitAspect::qtVersion(kit)) + return qtVersion->qtVersion(); } return std::nullopt; } @@ -716,10 +714,7 @@ void QtCreatorIntegration::handleSymbolRenameStage1( return reportRenamingError(oldName, Designer::Tr::tr("File \"%1\" not found in project.") .arg(uiFile.toUserOutput())); } - const Target * const target = project->activeTarget(); - if (!target) - return reportRenamingError(oldName, Designer::Tr::tr("No active target.")); - BuildSystem * const buildSystem = target->buildSystem(); + BuildSystem * const buildSystem = project->activeBuildSystem(); if (!buildSystem) return reportRenamingError(oldName, Designer::Tr::tr("No active build system.")); ExtraCompiler * const ec = buildSystem->extraCompilerForSource(uiFile); diff --git a/src/plugins/effectcomposer/effectcomposermodel.cpp b/src/plugins/effectcomposer/effectcomposermodel.cpp index ad9457dc295..9f7d70f9d3f 100644 --- a/src/plugins/effectcomposer/effectcomposermodel.cpp +++ b/src/plugins/effectcomposer/effectcomposermodel.cpp @@ -2128,8 +2128,8 @@ void EffectComposerModel::bakeShaders() resetEffectError(ErrorQMLParsing); resetEffectError(ErrorPreprocessor); - const ProjectExplorer::Target *target = ProjectExplorer::ProjectTree::currentTarget(); - if (!target) { + const ProjectExplorer::Kit *kit = ProjectExplorer::ProjectTree::currentKit(); + if (!kit) { setEffectError(failMessage.arg("Target not found")); return; } @@ -2151,7 +2151,7 @@ void EffectComposerModel::bakeShaders() QString fs = m_fragmentShader; writeToFile(fs.toUtf8(), m_fragmentSourceFilename, FileType::Text); - QtSupport::QtVersion *qtVer = QtSupport::QtKitAspect::qtVersion(target->kit()); + QtSupport::QtVersion *qtVer = QtSupport::QtKitAspect::qtVersion(kit); if (!qtVer) { setEffectError(failMessage.arg("Qt version not found")); return; diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 3a0d1094af6..91c33569a0f 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -666,8 +666,8 @@ Project::RestoreResult GenericProject::fromMap(const Store &map, QString *errorM t->addRunConfiguration(new CustomExecutableRunConfiguration(t)); } - if (Target *t = activeTarget()) - static_cast<GenericBuildSystem *>(t->buildSystem())->refresh(Everything); + if (auto bs = activeBuildSystem()) + static_cast<GenericBuildSystem *>(bs)->refresh(Everything); return RestoreResult::Ok; } @@ -700,8 +700,8 @@ Result GenericProjectFile::reload(IDocument::ReloadFlag flag, IDocument::ChangeT { Q_UNUSED(flag) Q_UNUSED(type) - if (Target *t = m_project->activeTarget()) - static_cast<GenericBuildSystem *>(t->buildSystem())->refresh(m_options); + if (auto bs = m_project->activeBuildSystem()) + static_cast<GenericBuildSystem *>(bs)->refresh(m_options); return Result::Ok; } @@ -712,17 +712,15 @@ void GenericProject::editFilesTriggered() files(Project::AllFiles), ICore::dialogParent()); if (sfd.exec() == QDialog::Accepted) { - if (Target *t = activeTarget()) { - auto bs = static_cast<GenericBuildSystem *>(t->buildSystem()); + if (auto bs = static_cast<GenericBuildSystem *>(activeBuildSystem())) bs->setFiles(transform(sfd.selectedFiles(), &FilePath::toUrlishString)); - } } } void GenericProject::removeFilesTriggered(const FilePaths &filesToRemove) { - if (Target *t = activeTarget()) - static_cast<GenericBuildSystem *>(t->buildSystem())->removeFiles(filesToRemove); + if (const auto bs = activeBuildSystem()) + static_cast<GenericBuildSystem *>(bs)->removeFiles(filesToRemove); } void setupGenericProject(QObject *guard) diff --git a/src/plugins/insight/insightmodel.cpp b/src/plugins/insight/insightmodel.cpp index fb0fbb1e047..ae2618c9348 100644 --- a/src/plugins/insight/insightmodel.cpp +++ b/src/plugins/insight/insightmodel.cpp @@ -652,9 +652,9 @@ void InsightModel::parseMainQml() void InsightModel::parseDefaultConfig() { // Load default insight config from plugin - const ProjectExplorer::Target *target = ProjectExplorer::ProjectTree::currentTarget(); - if (target) { - const QtSupport::QtVersion *qtVersion = QtSupport::QtKitAspect::qtVersion(target->kit()); + const ProjectExplorer::Kit *kit = ProjectExplorer::ProjectTree::currentKit(); + if (kit) { + const QtSupport::QtVersion *qtVersion = QtSupport::QtKitAspect::qtVersion(kit); if (qtVersion) { m_defaultConfig = readJSON(qtVersion->dataPath().toUrlishString() + "/" + dataFolder + "/" diff --git a/src/plugins/lua/bindings/project.cpp b/src/plugins/lua/bindings/project.cpp index 57c311ad04a..64b0b5abb1e 100644 --- a/src/plugins/lua/bindings/project.cpp +++ b/src/plugins/lua/bindings/project.cpp @@ -53,7 +53,7 @@ void setupProjectModule() "directory", sol::property(&Project::projectDirectory), "activeRunConfiguration", - [](Project *project) { return project->activeTarget()->activeRunConfiguration(); }); + [](Project *project) { return project->activeRunConfiguration(); }); result["startupProject"] = [] { return ProjectManager::instance()->startupProject(); }; @@ -72,7 +72,7 @@ void setupProjectModule() if (!project) throw sol::error("No startup project"); - auto runConfiguration = project->activeTarget()->activeRunConfiguration(); + auto runConfiguration = project->activeRunConfiguration(); if (!runConfiguration) throw sol::error("No active run configuration"); diff --git a/src/plugins/mcusupport/mcusupportplugin.cpp b/src/plugins/mcusupport/mcusupportplugin.cpp index 938dcb233a4..24d98ed2ca1 100644 --- a/src/plugins/mcusupport/mcusupportplugin.cpp +++ b/src/plugins/mcusupport/mcusupportplugin.cpp @@ -67,9 +67,8 @@ void updateMCUProjectTree(ProjectExplorer::Project *p) { if (!p || !p->rootProjectNode()) return; - ProjectExplorer::Target *target = p->activeTarget(); - if (!target || !target->kit() - || !target->kit()->hasValue(Constants::KIT_MCUTARGET_KITVERSION_KEY)) + ProjectExplorer::Kit *kit = p->activeKit(); + if (!kit || !kit->hasValue(Constants::KIT_MCUTARGET_KITVERSION_KEY)) return; p->rootProjectNode()->forEachProjectNode([](const ProjectNode *node) { diff --git a/src/plugins/mesonprojectmanager/mesonprojectnodes.cpp b/src/plugins/mesonprojectmanager/mesonprojectnodes.cpp index 66cb57721a2..eedd7125cc8 100644 --- a/src/plugins/mesonprojectmanager/mesonprojectnodes.cpp +++ b/src/plugins/mesonprojectmanager/mesonprojectnodes.cpp @@ -40,9 +40,8 @@ MesonTargetNode::MesonTargetNode(const FilePath &directory, const QString &name, void MesonTargetNode::build() { Project *p = getProject(); - ProjectExplorer::Target *t = p ? p->activeTarget() : nullptr; - if (t) - static_cast<MesonBuildConfiguration *>(t->buildSystem()->buildConfiguration())->build(m_name); + if (const auto bc = p ? p->activeBuildConfiguration() : nullptr) + static_cast<MesonBuildConfiguration *>(bc)->build(m_name); } QString MesonTargetNode::tooltip() const diff --git a/src/plugins/perfprofiler/perfprofilertool.cpp b/src/plugins/perfprofiler/perfprofilertool.cpp index 46f7f8cf4dd..81f54ff31cf 100644 --- a/src/plugins/perfprofiler/perfprofilertool.cpp +++ b/src/plugins/perfprofiler/perfprofilertool.cpp @@ -597,8 +597,7 @@ void PerfProfilerTool::showLoadTraceDialog() startLoading(); const Project *currentProject = ProjectManager::startupProject(); - const Target *target = currentProject ? currentProject->activeTarget() : nullptr; - const Kit *kit = target ? target->kit() : nullptr; + const Kit *kit = currentProject ? currentProject->activeKit() : nullptr; populateFileFinder(currentProject, kit); traceManager().loadFromTraceFile(filePath); diff --git a/src/plugins/projectexplorer/extracompiler.cpp b/src/plugins/projectexplorer/extracompiler.cpp index 54cdf3b8a03..25f9301969f 100644 --- a/src/plugins/projectexplorer/extracompiler.cpp +++ b/src/plugins/projectexplorer/extracompiler.cpp @@ -270,14 +270,10 @@ void ExtraCompiler::onEditorAboutToClose(IEditor *editor) Environment ExtraCompiler::buildEnvironment() const { - Target *target = project()->activeTarget(); - if (!target) - return Environment::systemEnvironment(); - - if (BuildConfiguration *bc = target->activeBuildConfiguration()) + if (BuildConfiguration *bc = project()->activeBuildConfiguration()) return bc->environment(); - const EnvironmentItems changes = EnvironmentKitAspect::buildEnvChanges(target->kit()); + const EnvironmentItems changes = EnvironmentKitAspect::buildEnvChanges(project()->activeKit()); Environment env = Environment::systemEnvironment(); env.modify(changes); return env; diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index b4e5cdee4c3..18979ec8ab7 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -445,6 +445,31 @@ void Project::setActiveTarget(Target *target, SetActive cascade) } } +Kit *Project::activeKit() const +{ + return activeTarget() ? activeTarget()->kit() : nullptr; +} + +RunConfiguration *Project::activeRunConfiguration() const +{ + return activeTarget() ? activeTarget()->activeRunConfiguration() : nullptr; +} + +BuildConfiguration *Project::activeBuildConfiguration() const +{ + return activeTarget() ? activeTarget()->activeBuildConfiguration() : nullptr; +} + +DeployConfiguration *Project::activeDeployConfiguration() const +{ + return activeTarget() ? activeTarget()->activeDeployConfiguration() : nullptr; +} + +BuildSystem *Project::activeBuildSystem() const +{ + return activeTarget() ? activeTarget()->buildSystem() : nullptr; +} + QList<Store> Project::vanishedTargets() const { return d->m_vanishedTargets; @@ -1206,10 +1231,8 @@ const QList<QPair<Id, QString>> Project::allGenerators() const QList<QPair<Id, QString>> generators; for (auto it = d->m_generators.cbegin(); it != d->m_generators.cend(); ++it) generators << qMakePair(it.key(), it.value().first); - if (const Target * const t = activeTarget()) { - if (const BuildSystem * const bs = t->buildSystem()) - generators += bs->generators(); - } + if (const BuildSystem * const bs = activeBuildSystem()) + generators += bs->generators(); return generators; } @@ -1220,10 +1243,8 @@ void Project::runGenerator(Utils::Id id) it.value().second(); return; } - if (const Target * const t = activeTarget()) { - if (BuildSystem * const bs = t->buildSystem()) - bs->runGenerator(id); - } + if (BuildSystem * const bs = activeBuildSystem()) + bs->runGenerator(id); } void Project::addVariablesToMacroExpander(const QByteArray &prefix, @@ -1231,19 +1252,19 @@ void Project::addVariablesToMacroExpander(const QByteArray &prefix, MacroExpander *expander, const std::function<Project *()> &projectGetter) { - const auto targetGetter = [projectGetter]() -> Target * { - if (const Project *const project = projectGetter()) - return project->activeTarget(); + const auto kitGetter = [projectGetter]() -> Kit * { + if (const Project * const project = projectGetter()) + return project->activeKit(); return nullptr; }; - const auto bcGetter = [targetGetter]() -> BuildConfiguration * { - if (const Target *const target = targetGetter()) - return target->activeBuildConfiguration(); + const auto bcGetter = [projectGetter]() -> BuildConfiguration * { + if (const Project * const project = projectGetter()) + return project->activeBuildConfiguration(); return nullptr; }; - const auto rcGetter = [targetGetter]() -> RunConfiguration * { - if (const Target *const target = targetGetter()) - return target->activeRunConfiguration(); + const auto rcGetter = [projectGetter]() -> RunConfiguration * { + if (const Project * const project = projectGetter()) + return project->activeRunConfiguration(); return nullptr; }; const QByteArray fullPrefix = (prefix.endsWith(':') ? prefix : prefix + ':'); @@ -1275,9 +1296,9 @@ void Project::addVariablesToMacroExpander(const QByteArray &prefix, expander->registerVariable(fullPrefix + "Kit:Name", //: %1 is something like "Active project" ::PE::Tr::tr("%1: The name of the active kit.").arg(descriptor), - [targetGetter]() -> QString { - if (const Target *const target = targetGetter()) - return target->kit()->displayName(); + [kitGetter]() -> QString { + if (const Kit *const kit = kitGetter()) + return kit->displayName(); return {}; }); expander->registerVariable(fullPrefix + "BuildConfig:Name", @@ -1593,7 +1614,7 @@ void ProjectExplorerTest::testProject_multipleBuildConfigs() QVERIFY(target); QCOMPARE(target->buildConfigurations().size(), 6); target->setActiveBuildConfiguration(target->buildConfigurations().at(1), SetActive::Cascade); - BuildSystem * const bs = theProject.project()->activeTarget()->buildSystem(); + BuildSystem * const bs = theProject.project()->activeBuildSystem(); QVERIFY(bs); QCOMPARE(bs, target->activeBuildConfiguration()->buildSystem()); if (bs->isWaitingForParse() || bs->isParsing()) { @@ -1661,11 +1682,9 @@ void ProjectExplorerTest::testSourceToBinaryMapping() QVERIFY2(theProject, qPrintable(theProject.errorMessage())); theProject.project()->configureAsExampleProject(kit); QCOMPARE(theProject.project()->targets().size(), 1); - Target * const target = theProject.project()->activeTarget(); - QVERIFY(target); - BuildSystem * const bs = target->buildSystem(); + BuildSystem * const bs = theProject.project()->activeBuildSystem(); QVERIFY(bs); - QCOMPARE(bs, target->activeBuildConfiguration()->buildSystem()); + QCOMPARE(bs, theProject.project()->activeBuildConfiguration()->buildSystem()); if (bs->isWaitingForParse() || bs->isParsing()) { QSignalSpy parsingFinishedSpy(bs, &BuildSystem::parsingFinished); QVERIFY(parsingFinishedSpy.wait(10000)); diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h index 9c60aa3ed6c..e9976ed7cf2 100644 --- a/src/plugins/projectexplorer/project.h +++ b/src/plugins/projectexplorer/project.h @@ -31,12 +31,14 @@ class BuildConfiguration; class BuildInfo; class BuildSystem; class ContainerNode; +class DeployConfiguration; class EditorConfiguration; class FolderNode; class Node; class ProjectImporter; class ProjectNode; class ProjectPrivate; +class RunConfiguration; class Target; enum class SetActive : int; @@ -93,6 +95,12 @@ public: Target *target(Kit *k) const; void setActiveTarget(Target *target, SetActive cascade); + Kit *activeKit() const; + RunConfiguration *activeRunConfiguration() const; + BuildConfiguration *activeBuildConfiguration() const; + DeployConfiguration *activeDeployConfiguration() const; + BuildSystem *activeBuildSystem() const; + virtual Tasks projectIssues(const Kit *k) const; static bool copySteps(Target *sourceTarget, Target *newTarget); diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 9d3c8c4ed3a..da5c4b6de53 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -283,9 +283,9 @@ static std::optional<Environment> sysEnv(const Project *) static std::optional<Environment> buildEnv(const Project *project) { - if (!project || !project->activeTarget() || !project->activeTarget()->activeBuildConfiguration()) + if (!project || !project->activeBuildConfiguration()) return {}; - return project->activeTarget()->activeBuildConfiguration()->environment(); + return project->activeBuildConfiguration()->environment(); } static const RunConfiguration *runConfigForNode(const Target *target, const ProjectNode *node) @@ -323,33 +323,26 @@ static bool canOpenTerminalWithRunEnv(const Project *project, const ProjectNode IDevice::ConstPtr device = DeviceManager::deviceForPath(runConfig->runnable().command.executable()); if (!device) - device = RunDeviceKitAspect::device(target->kit()); + device = RunDeviceKitAspect::device(project->activeKit()); return device && device->canOpenTerminal(); } static BuildConfiguration *currentBuildConfiguration() { const Project * const project = ProjectTree::currentProject(); - const Target * const target = project ? project->activeTarget() : nullptr; - return target ? target->activeBuildConfiguration() : nullptr; -} - -static Target *activeTarget() -{ - const Project * const project = ProjectManager::startupProject(); - return project ? project->activeTarget() : nullptr; + return project ? project->activeBuildConfiguration() : nullptr; } static BuildConfiguration *activeBuildConfiguration() { - const Target * const target = activeTarget(); - return target ? target->activeBuildConfiguration() : nullptr; + const Project * const project = ProjectManager::startupProject(); + return project ? project->activeBuildConfiguration() : nullptr; } static RunConfiguration *activeRunConfiguration() { - const Target * const target = activeTarget(); - return target ? target->activeRunConfiguration() : nullptr; + const Project * const project = ProjectManager::startupProject(); + return project ? project->activeRunConfiguration() : nullptr; } static bool isTextFile(const FilePath &filePath) @@ -1741,9 +1734,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er connect(dd->m_buildForRunConfigAction, &QAction::triggered, dd, [] { const Project * const project = ProjectManager::startupProject(); QTC_ASSERT(project, return); - const Target * const target = project->activeTarget(); - QTC_ASSERT(target, return); - const RunConfiguration * const runConfig = target->activeRunConfiguration(); + const RunConfiguration * const runConfig = project->activeRunConfiguration(); QTC_ASSERT(runConfig, return); ProjectNode * const productNode = runConfig->productNode(); QTC_ASSERT(productNode, return); @@ -1928,8 +1919,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er EnvironmentProvider::addProvider( {"CurrentDocument:Project:RunConfig:Env", Tr::tr("Current Run Environment"), [] { const Project *const project = ProjectTree::currentProject(); - const Target *const target = project ? project->activeTarget() : nullptr; - const RunConfiguration *const rc = target ? target->activeRunConfiguration() : nullptr; + const RunConfiguration *const rc = project ? project->activeRunConfiguration() : nullptr; if (rc) { if (auto envAspect = rc->aspect<EnvironmentAspect>()) return envAspect->environment(); @@ -2704,8 +2694,7 @@ void ProjectExplorerPluginPrivate::updateActions() ? Icons::CANCELBUILD_FLAT.icon() : buildAction->icon()); - const RunConfiguration * const runConfig = project && project->activeTarget() - ? project->activeTarget()->activeRunConfiguration() : nullptr; + const RunConfiguration * const runConfig = project ? project->activeRunConfiguration() : nullptr; // Normal actions m_buildAction->setParameter(projectName); @@ -2928,9 +2917,7 @@ void ProjectExplorerPluginPrivate::runProjectContextMenu(RunConfiguration *rc) static bool hasBuildSettings(const Project *pro) { return Utils::anyOf(ProjectManager::projectOrder(pro), [](const Project *project) { - return project - && project->activeTarget() - && project->activeTarget()->activeBuildConfiguration(); + return project && project->activeBuildConfiguration(); }); } @@ -2941,14 +2928,13 @@ static QPair<bool, QString> subprojectEnabledState(const Project *pro) const QList<Project *> &projects = ProjectManager::projectOrder(pro); for (const Project *project : projects) { - if (project && project->activeTarget() - && project->activeTarget()->activeBuildConfiguration() - && !project->activeTarget()->activeBuildConfiguration()->isEnabled()) { + if (project && project->activeBuildConfiguration() + && !project->activeBuildConfiguration()->isEnabled()) { result.first = false; result.second += Tr::tr("Building \"%1\" is disabled: %2<br>") .arg(project->displayName(), - project->activeTarget()->activeBuildConfiguration()->disabledReason()); + project->activeBuildConfiguration()->disabledReason()); } } @@ -3040,8 +3026,7 @@ void ProjectExplorerPlugin::handleCommandLineArguments(const QStringList &argume static bool hasDeploySettings(Project *pro) { return Utils::anyOf(ProjectManager::projectOrder(pro), [](Project *project) { - return project->activeTarget() - && project->activeTarget()->activeDeployConfiguration(); + return project->activeDeployConfiguration(); }); } @@ -3050,9 +3035,8 @@ void ProjectExplorerPlugin::runProject(Project *pro, Id mode, const bool forceSk if (!pro) return; - if (Target *target = pro->activeTarget()) - if (RunConfiguration *rc = target->activeRunConfiguration()) - runRunConfiguration(rc, mode, forceSkipDeploy); + if (RunConfiguration *rc = pro->activeRunConfiguration()) + runRunConfiguration(rc, mode, forceSkipDeploy); } void ProjectExplorerPlugin::runStartupProject(Id runMode, bool forceSkipDeploy) @@ -3153,9 +3137,8 @@ void ProjectExplorerPluginPrivate::updateDeployActions() bool enableDeploySessionAction = true; if (projectExplorerSettings().buildBeforeDeploy != BuildBeforeRunMode::Off) { auto hasDisabledBuildConfiguration = [](Project *project) { - return project && project->activeTarget() - && project->activeTarget()->activeBuildConfiguration() - && !project->activeTarget()->activeBuildConfiguration()->isEnabled(); + return project && project->activeBuildConfiguration() + && !project->activeBuildConfiguration()->isEnabled(); }; if (Utils::anyOf(ProjectManager::projectOrder(nullptr), hasDisabledBuildConfiguration)) @@ -3179,17 +3162,17 @@ Result ProjectExplorerPlugin::canRunStartupProject(Utils::Id runMode) .arg(project->displayName())); } - Target *target = project->activeTarget(); - if (!target) { + Kit *kit = project->activeKit(); + if (!kit) { return Result::Error(Tr::tr("The project \"%1\" has no active kit.") .arg(project->displayName())); } - RunConfiguration *activeRC = target->activeRunConfiguration(); + RunConfiguration *activeRC = project->activeRunConfiguration(); if (!activeRC) { return Result::Error( Tr::tr("The kit \"%1\" for the project \"%2\" has no active run configuration.") - .arg(target->displayName(), project->displayName())); + .arg(kit->displayName(), project->displayName())); } if (!activeRC->isEnabled(runMode)) @@ -3208,10 +3191,8 @@ Result ProjectExplorerPlugin::canRunStartupProject(Utils::Id runMode) } // shouldn't actually be shown to the user... - if (!RunControl::canRun(runMode, RunDeviceTypeKitAspect::deviceTypeId(target->kit()), - activeRC->id())) { + if (!RunControl::canRun(runMode, RunDeviceTypeKitAspect::deviceTypeId(kit), activeRC->id())) return Result::Error(Tr::tr("Cannot run \"%1\".").arg(activeRC->displayName())); - } if (dd->m_delayedRunConfiguration && dd->m_delayedRunConfiguration->project() == project) return Result::Error(Tr::tr("A run action is already scheduled for the active project.")); @@ -3414,10 +3395,11 @@ void ProjectExplorerPluginPrivate::updateContextMenuActions(Node *currentNode) }; bool canEditProject = true; - if (project && project->activeTarget()) { - const BuildSystem * const bs = project->activeTarget()->buildSystem(); - if (bs->isParsing() || bs->isWaitingForParse()) + if (project) { + if (const BuildSystem * const bs = project->activeBuildSystem(); + bs && (bs->isParsing() || bs->isWaitingForParse())) { canEditProject = false; + } } if (currentNode->asFolderNode()) { // Also handles ProjectNode @@ -3800,9 +3782,9 @@ void ProjectExplorerPluginPrivate::showInFileSystemPane() static BuildConfiguration *activeBuildConfiguration(Project *project) { - if (!project || !project->activeTarget() || !project->activeTarget()->activeBuildConfiguration()) + if (!project || !project->activeBuildConfiguration()) return {}; - return project->activeTarget()->activeBuildConfiguration(); + return project->activeBuildConfiguration(); } void ProjectExplorerPluginPrivate::openTerminalHere(const EnvironmentGetter &env) diff --git a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp index 8ebce2c9c2b..70c6cf8c09b 100644 --- a/src/plugins/projectexplorer/projectmodels.cpp +++ b/src/plugins/projectexplorer/projectmodels.cpp @@ -196,8 +196,7 @@ QVariant FlatModel::data(const QModelIndex &index, int role) const const FileNode * const fileNode = node->asFileNode(); const ContainerNode * const containerNode = node->asContainerNode(); const Project * const project = containerNode ? containerNode->project() : nullptr; - const Target * const target = project ? project->activeTarget() : nullptr; - const BuildSystem * const bs = target ? target->buildSystem() : nullptr; + const BuildSystem * const bs = project ? project->activeBuildSystem() : nullptr; switch (role) { case Qt::DisplayRole: @@ -207,8 +206,8 @@ QVariant FlatModel::data(const QModelIndex &index, int role) const case Qt::ToolTipRole: { QString tooltip = node->tooltip(); if (project) { - if (target) { - QString projectIssues = toHtml(project->projectIssues(project->activeTarget()->kit())); + if (project->activeKit()) { + QString projectIssues = toHtml(project->projectIssues(project->activeKit())); if (!projectIssues.isEmpty()) tooltip += "<p>" + projectIssues; } else { @@ -234,7 +233,7 @@ QVariant FlatModel::data(const QModelIndex &index, int role) const return warnIcon; if (bs && bs->isParsing()) return emptyIcon; - if (!target || !project->projectIssues(target->kit()).isEmpty()) + if (!project->activeKit() || !project->projectIssues(project->activeKit()).isEmpty()) return warnIcon; return containerNode->rootProjectNode() ? containerNode->rootProjectNode()->icon() : folderNode->icon(); diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index 03c7d33edc5..70169cf3270 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -1040,8 +1040,7 @@ void ProjectNode::setFallbackData(Utils::Id key, const QVariant &value) BuildSystem *ProjectNode::buildSystem() const { Project *p = getProject(); - Target *t = p ? p->activeTarget() : nullptr; - return t ? t->buildSystem() : nullptr; + return p ? p->activeBuildSystem() : nullptr; } bool FolderNode::isEmpty() const diff --git a/src/plugins/projectexplorer/projecttree.cpp b/src/plugins/projectexplorer/projecttree.cpp index a1fc0d0dc05..907602ee2aa 100644 --- a/src/plugins/projectexplorer/projecttree.cpp +++ b/src/plugins/projectexplorer/projecttree.cpp @@ -89,16 +89,16 @@ Project *ProjectTree::currentProject() return s_instance->m_currentProject; } -Target *ProjectTree::currentTarget() +Kit *ProjectTree::currentKit() { Project *p = currentProject(); - return p ? p->activeTarget() : nullptr; + return p ? p->activeKit() : nullptr; } BuildSystem *ProjectTree::currentBuildSystem() { - Target *t = currentTarget(); - return t ? t->buildSystem() : nullptr; + Project *p = currentProject(); + return p ? p->activeBuildSystem() : nullptr; } Node *ProjectTree::currentNode() diff --git a/src/plugins/projectexplorer/projecttree.h b/src/plugins/projectexplorer/projecttree.h index aea413f7bb4..4c9a1755f0e 100644 --- a/src/plugins/projectexplorer/projecttree.h +++ b/src/plugins/projectexplorer/projecttree.h @@ -16,11 +16,11 @@ namespace ProjectExplorer { class BuildSystem; class FileNode; class FolderNode; +class Kit; class Node; class Project; class ProjectNode; class SessionNode; -class Target; namespace Internal { class ProjectTreeWidget; } @@ -34,7 +34,7 @@ public: static ProjectTree *instance(); static Project *currentProject(); - static Target *currentTarget(); + static Kit *currentKit(); static BuildSystem *currentBuildSystem(); static Node *currentNode(); static Utils::FilePath currentFilePath(); diff --git a/src/plugins/projectexplorer/rawprojectpart.cpp b/src/plugins/projectexplorer/rawprojectpart.cpp index 0825b6b6914..c02fbdb7b44 100644 --- a/src/plugins/projectexplorer/rawprojectpart.cpp +++ b/src/plugins/projectexplorer/rawprojectpart.cpp @@ -201,8 +201,8 @@ ProjectUpdateInfo::ProjectUpdateInfo(Project *project, if (project) { projectName = project->displayName(); projectFilePath = project->projectFilePath(); - if (project->activeTarget() && project->activeTarget()->activeBuildConfiguration()) - buildRoot = project->activeTarget()->activeBuildConfiguration()->buildDirectory(); + if (project->activeBuildConfiguration()) + buildRoot = project->activeBuildConfiguration()->buildDirectory(); } } diff --git a/src/plugins/projectexplorer/workspaceproject.cpp b/src/plugins/projectexplorer/workspaceproject.cpp index 56872416298..c64d37cc719 100644 --- a/src/plugins/projectexplorer/workspaceproject.cpp +++ b/src/plugins/projectexplorer/workspaceproject.cpp @@ -722,10 +722,8 @@ void setupWorkspaceProject(QObject *guard) QTC_ASSERT(node, return); const auto project = qobject_cast<WorkspaceProject *>(node->getProject()); QTC_ASSERT(project, return); - if (auto target = project->activeTarget()) { - if (auto buildSystem = dynamic_cast<WorkspaceBuildSystem *>(target->buildSystem())) - buildSystem->reparse(true); - } + if (auto buildSystem = dynamic_cast<WorkspaceBuildSystem *>(project->activeBuildSystem())) + buildSystem->reparse(true); }); QObject::connect( @@ -740,10 +738,8 @@ void setupWorkspaceProject(QObject *guard) excludeAction->setEnabled(node->isEnabled()); bool enableRescan = false; if (Project *project = node->getProject()) { - if (Target *target = project->activeTarget()) { - if (BuildSystem *buildSystem = target->buildSystem()) - enableRescan = !buildSystem->isParsing(); - } + if (BuildSystem *buildSystem = project->activeBuildSystem()) + enableRescan = !buildSystem->isParsing(); } rescanAction->setEnabled(enableRescan); } diff --git a/src/plugins/python/pyside.cpp b/src/plugins/python/pyside.cpp index bdccde1f3fb..648cfa46dcc 100644 --- a/src/plugins/python/pyside.cpp +++ b/src/plugins/python/pyside.cpp @@ -217,10 +217,7 @@ void PySideInstaller::handleDocumentOpened(Core::IDocument *document) PythonProject *project = pythonProjectForFile(textDocument->filePath()); if (!project) return; - Target *target = project->activeTarget(); - if (!target) - return; - BuildConfiguration *buildConfig = target->activeBuildConfiguration(); + BuildConfiguration *buildConfig = project->activeBuildConfiguration(); if (!buildConfig) return; auto *pythonBuildConfig = qobject_cast<PythonBuildConfiguration *>(buildConfig); diff --git a/src/plugins/python/pythoneditor.cpp b/src/plugins/python/pythoneditor.cpp index 5854b92d3de..49f59483ab5 100644 --- a/src/plugins/python/pythoneditor.cpp +++ b/src/plugins/python/pythoneditor.cpp @@ -163,8 +163,7 @@ void PythonEditorWidget::updateInterpretersSelector() const QString name = buildConfiguration->displayName(); QAction *action = interpretersGroup->addAction(buildConfiguration->displayName()); action->setCheckable(true); - if (target == project->activeTarget() - && target->activeBuildConfiguration() == buildConfiguration) { + if (project->activeBuildConfiguration() == buildConfiguration) { action->setChecked(true); setButtonText(name); if (auto pbc = qobject_cast<PythonBuildConfiguration *>(buildConfiguration)) diff --git a/src/plugins/python/pythonlanguageclient.cpp b/src/plugins/python/pythonlanguageclient.cpp index 9678dcbdf40..3f8c1b94bd3 100644 --- a/src/plugins/python/pythonlanguageclient.cpp +++ b/src/plugins/python/pythonlanguageclient.cpp @@ -199,13 +199,11 @@ void PyLSClient::openDocument(TextEditor::TextDocument *document) if (reachable()) { const FilePath documentPath = document->filePath(); if (PythonProject *project = pythonProjectForFile(documentPath)) { - if (Target *target = project->activeTarget()) { - if (BuildConfiguration *buildConfig = target->activeBuildConfiguration()) { - if (BuildStepList *buildSteps = buildConfig->buildSteps()) { - BuildStep *buildStep = buildSteps->firstStepWithId(PySideBuildStep::id()); - if (auto *pythonBuildStep = qobject_cast<PySideBuildStep *>(buildStep)) - updateExtraCompilers(project, pythonBuildStep->extraCompilers()); - } + if (BuildConfiguration *buildConfig = project->activeBuildConfiguration()) { + if (BuildStepList *buildSteps = buildConfig->buildSteps()) { + BuildStep *buildStep = buildSteps->firstStepWithId(PySideBuildStep::id()); + if (auto *pythonBuildStep = qobject_cast<PySideBuildStep *>(buildStep)) + updateExtraCompilers(project, pythonBuildStep->extraCompilers()); } } } else if (isSupportedDocument(document)) { diff --git a/src/plugins/python/pythonutils.cpp b/src/plugins/python/pythonutils.cpp index b2648fc7306..3cec49a2cd5 100644 --- a/src/plugins/python/pythonutils.cpp +++ b/src/plugins/python/pythonutils.cpp @@ -45,12 +45,10 @@ FilePath detectPython(const FilePath &documentPath) FilePaths dirs = Environment::systemEnvironment().path(); if (project && project->mimeType() == Constants::C_PY_PROJECT_MIME_TYPE) { - if (const Target *target = project->activeTarget()) { - if (auto bc = qobject_cast<PythonBuildConfiguration *>(target->activeBuildConfiguration())) - return bc->python(); - if (const std::optional<Interpreter> python = PythonKitAspect::python(target->kit())) - return python->command; - } + if (auto bc = qobject_cast<PythonBuildConfiguration *>(project->activeBuildConfiguration())) + return bc->python(); + if (const std::optional<Interpreter> python = PythonKitAspect::python(project->activeKit())) + return python->command; } const FilePath userDefined = userDefinedPythonsForDocument().value(documentPath); diff --git a/src/plugins/qbsprojectmanager/qbslanguageclient.cpp b/src/plugins/qbsprojectmanager/qbslanguageclient.cpp index 4f2461f82b0..4d5db943f20 100644 --- a/src/plugins/qbsprojectmanager/qbslanguageclient.cpp +++ b/src/plugins/qbsprojectmanager/qbslanguageclient.cpp @@ -73,11 +73,11 @@ bool QbsLanguageClient::isActive() const { if (!d->buildSystem) return false; - if (!d->buildSystem->target()->activeBuildConfiguration()) + if (!d->buildSystem->project()->activeBuildConfiguration()) return false; - if (d->buildSystem->target()->activeBuildConfiguration()->buildSystem() != d->buildSystem) + if (d->buildSystem->project()->activeBuildConfiguration()->buildSystem() != d->buildSystem) return false; - if (d->buildSystem->project()->activeTarget() != d->buildSystem->target()) + if (d->buildSystem->project()->activeBuildSystem() != d->buildSystem) return false; return true; } diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index 8a84ac53c4a..03457d050e3 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -132,16 +132,16 @@ void QbsProject::configureAsExampleProject(Kit *kit) } } setup(infoList); - if (activeTarget()) - static_cast<QbsBuildSystem *>(activeTarget()->buildSystem())->prepareForParsing(); + if (activeBuildSystem()) + static_cast<QbsBuildSystem *>(activeBuildSystem())->prepareForParsing(); } static bool supportsNodeAction(ProjectAction action, const Node *node) { const auto project = static_cast<QbsProject *>(node->getProject()); - Target *t = project ? project->activeTarget() : nullptr; - QbsBuildSystem *bs = t ? static_cast<QbsBuildSystem *>(t->buildSystem()) : nullptr; + QbsBuildSystem *bs = project ? static_cast<QbsBuildSystem *>(project->activeBuildSystem()) + : nullptr; if (!bs) return false; if (!bs->isProjectEditable()) @@ -508,8 +508,7 @@ void QbsBuildSystem::updateProjectNodes(const std::function<void ()> &continuati OpTimer("updateProjectNodes continuation"); m_treeCreationWatcher->deleteLater(); m_treeCreationWatcher = nullptr; - if (target() != project()->activeTarget() - || target()->activeBuildConfiguration()->buildSystem() != this) { + if (project()->activeBuildSystem() != this) { return; } project()->setDisplayName(rootNode->displayName()); @@ -560,8 +559,7 @@ void QbsBuildSystem::handleQbsParsingDone(bool success) bool dataChanged = false; bool envChanged = m_lastParseEnv != m_qbsProjectParser->environment(); m_lastParseEnv = m_qbsProjectParser->environment(); - const bool isActiveBuildSystem = project()->activeTarget() - && project()->activeTarget()->buildSystem() == this; + const bool isActiveBuildSystem = project()->activeBuildSystem() == this; if (success) { const QJsonObject projectData = m_qbsProjectParser->session()->projectData(); if (projectData != m_projectData) { diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp index 253f387413f..7071741dce1 100644 --- a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp +++ b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp @@ -325,8 +325,8 @@ void QbsProjectManagerPlugin::updateContextActions(Node *node) { auto project = qobject_cast<Internal::QbsProject *>(ProjectTree::currentProject()); bool isEnabled = !BuildManager::isBuilding(project) - && project && project->activeTarget() - && !project->activeTarget()->buildSystem()->isParsing() + && project && project->activeBuildSystem() + && !project->activeBuildSystem()->isParsing() && node && node->isEnabled(); const bool isFile = project && node && node->asFileNode(); @@ -349,8 +349,8 @@ void QbsProjectManagerPlugin::updateReparseQbsAction() auto project = qobject_cast<QbsProject *>(ProjectManager::startupProject()); m_reparseQbs->setEnabled(project && !BuildManager::isBuilding(project) - && project && project->activeTarget() - && !project->activeTarget()->buildSystem()->isParsing()); + && project && project->activeBuildSystem() + && !project->activeBuildSystem()->isParsing()); } void QbsProjectManagerPlugin::updateBuildActions() @@ -380,8 +380,8 @@ void QbsProjectManagerPlugin::updateBuildActions() if (QbsProject *editorProject = currentEditorProject()) { enabled = !BuildManager::isBuilding(editorProject) - && editorProject->activeTarget() - && !editorProject->activeTarget()->buildSystem()->isParsing(); + && editorProject->activeBuildSystem() + && !editorProject->activeBuildSystem()->isParsing(); fileVisible = productNode || dynamic_cast<QbsProjectNode *>(parentProjectNode) || dynamic_cast<QbsGroupNode *>(parentProjectNode); @@ -536,10 +536,7 @@ void QbsProjectManagerPlugin::buildFiles(QbsProject *project, const QStringList QTC_ASSERT(project, return); QTC_ASSERT(!files.isEmpty(), return); - Target *t = project->activeTarget(); - if (!t) - return; - auto bc = qobject_cast<QbsBuildConfiguration *>(t->activeBuildConfiguration()); + auto bc = qobject_cast<QbsBuildConfiguration *>(project->activeBuildConfiguration()); if (!bc) return; @@ -568,10 +565,7 @@ void QbsProjectManagerPlugin::runStepsForProducts(QbsProject *project, QTC_ASSERT(project, return); QTC_ASSERT(!products.isEmpty(), return); - Target *t = project->activeTarget(); - if (!t) - return; - auto bc = qobject_cast<QbsBuildConfiguration *>(t->activeBuildConfiguration()); + auto bc = qobject_cast<QbsBuildConfiguration *>(project->activeBuildConfiguration()); if (!bc) return; @@ -608,11 +602,7 @@ void QbsProjectManagerPlugin::reparseProject(QbsProject *project) if (!project) return; - Target *t = project->activeTarget(); - if (!t) - return; - - if (auto bs = qobject_cast<QbsBuildSystem *>(t->buildSystem()); + if (auto bs = qobject_cast<QbsBuildSystem *>(project->activeBuildSystem()); bs && bs->session()->apiLevel() >= 8) { bs->scheduleParsing({{Constants::QBS_RESTORE_BEHAVIOR_KEY, "restore-and-resolve"}}); } diff --git a/src/plugins/qmakeprojectmanager/librarydetailscontroller.cpp b/src/plugins/qmakeprojectmanager/librarydetailscontroller.cpp index 0d565df1223..fa7d3a1fce2 100644 --- a/src/plugins/qmakeprojectmanager/librarydetailscontroller.cpp +++ b/src/plugins/qmakeprojectmanager/librarydetailscontroller.cpp @@ -1025,8 +1025,7 @@ void InternalLibraryDetailsController::updateProFile() m_rootProjectPath = project->projectDirectory().toUrlishString(); - auto t = project->activeTarget(); - auto bs = dynamic_cast<QmakeBuildSystem *>(t ? t->buildSystem() : nullptr); + auto bs = dynamic_cast<QmakeBuildSystem *>(project ? project->activeBuildSystem() : nullptr); QTC_ASSERT(bs, return); QDir rootDir(m_rootProjectPath); @@ -1106,9 +1105,8 @@ QString InternalLibraryDetailsController::snippet() const // the build directory of the active build configuration QDir rootBuildDir = rootDir; // If the project is unconfigured use the project dir if (const Project *project = ProjectManager::projectForFile(proFile())) { - if (ProjectExplorer::Target *t = project->activeTarget()) - if (ProjectExplorer::BuildConfiguration *bc = t->activeBuildConfiguration()) - rootBuildDir.setPath(bc->buildDirectory().toUrlishString()); + if (ProjectExplorer::BuildConfiguration *bc = project->activeBuildConfiguration()) + rootBuildDir.setPath(bc->buildDirectory().toUrlishString()); } // the project for which we insert the snippet inside build tree diff --git a/src/plugins/qmakeprojectmanager/qmakeprojectmanagerplugin.cpp b/src/plugins/qmakeprojectmanager/qmakeprojectmanagerplugin.cpp index 8c7d8062a7e..265f9866be7 100644 --- a/src/plugins/qmakeprojectmanager/qmakeprojectmanagerplugin.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeprojectmanagerplugin.cpp @@ -387,10 +387,10 @@ void QmakeProjectManagerPluginPrivate::runQMakeImpl(Project *p, Node *node) auto *qmakeProject = qobject_cast<QmakeProject *>(p); QTC_ASSERT(qmakeProject, return); - if (!qmakeProject->activeTarget() || !qmakeProject->activeTarget()->activeBuildConfiguration()) + if (!qmakeProject->activeBuildConfiguration()) return; - auto *bc = static_cast<QmakeBuildConfiguration *>(qmakeProject->activeTarget()->activeBuildConfiguration()); + auto *bc = static_cast<QmakeBuildConfiguration *>(qmakeProject->activeBuildConfiguration()); QMakeStep *qs = bc->qmakeStep(); if (!qs) return; @@ -420,11 +420,7 @@ void QmakeProjectManagerPluginPrivate::buildFile() Project *project = ProjectManager::projectForFile(file); if (!project) return; - Target *target = project->activeTarget(); - if (!target) - return; - - if (auto bs = qobject_cast<QmakeBuildSystem *>(target->buildSystem())) + if (auto bs = qobject_cast<QmakeBuildSystem *>(project->activeBuildSystem())) bs->buildHelper(QmakeBuildSystem::BUILD, true, buildableFileProFile(node), node); } @@ -472,10 +468,7 @@ void QmakeProjectManagerPluginPrivate::updateRunQMakeAction() enable = false; auto pro = qobject_cast<QmakeProject *>(m_previousStartupProject); m_runQMakeAction->setVisible(pro); - if (!pro - || !pro->rootProjectNode() - || !pro->activeTarget() - || !pro->activeTarget()->activeBuildConfiguration()) + if (!pro || !pro->rootProjectNode() || !pro->activeBuildConfiguration()) enable = false; m_runQMakeAction->setEnabled(enable); @@ -515,8 +508,9 @@ void QmakeProjectManagerPluginPrivate::updateContextActions(Node *node) m_buildSubProjectAction->setParameter(subProjectName); m_buildSubProjectContextMenu->setParameter(proFileNode ? proFileNode->displayName() : QString()); - auto buildConfiguration = (qmakeProject && qmakeProject->activeTarget()) ? - static_cast<QmakeBuildConfiguration *>(qmakeProject->activeTarget()->activeBuildConfiguration()) : nullptr; + auto buildConfiguration = qmakeProject ? static_cast<QmakeBuildConfiguration *>( + qmakeProject->activeBuildConfiguration()) + : nullptr; bool isProjectNode = qmakeProject && proFileNode && buildConfiguration; bool isBuilding = BuildManager::isBuilding(project); bool enabled = subProjectActionsVisible && !isBuilding; diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp index 4c31579f35c..b6aa16ceb12 100644 --- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp +++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp @@ -1776,8 +1776,8 @@ void openEffectComposer(const QString &filePath) void openOldEffectMaker(const QString &filePath) { - const ProjectExplorer::Target *target = ProjectExplorer::ProjectTree::currentTarget(); - if (!target) { + const ProjectExplorer::Kit *kit = ProjectExplorer::ProjectTree::currentKit(); + if (!kit) { qWarning() << __FUNCTION__ << "No project open"; return; } @@ -1789,7 +1789,7 @@ void openOldEffectMaker(const QString &filePath) if (!effectResPath.exists()) effectResPath.createDir(); - const QtSupport::QtVersion *baseQtVersion = QtSupport::QtKitAspect::qtVersion(target->kit()); + const QtSupport::QtVersion *baseQtVersion = QtSupport::QtKitAspect::qtVersion(kit); if (baseQtVersion) { Utils::Environment env = Utils::Environment::systemEnvironment(); diff --git a/src/plugins/qmljseditor/qmllsclientsettings.cpp b/src/plugins/qmljseditor/qmllsclientsettings.cpp index f8ef2695185..3e32a20758a 100644 --- a/src/plugins/qmljseditor/qmllsclientsettings.cpp +++ b/src/plugins/qmljseditor/qmllsclientsettings.cpp @@ -69,16 +69,7 @@ QmllsClientSettings::QmllsClientSettings() static QtVersion *qtVersionFromProject(const Project *project) { - if (!project) - return {}; - auto *target = project->activeTarget(); - if (!target) - return {}; - auto *kit = target->kit(); - if (!kit) - return {}; - auto qtVersion = QtKitAspect::qtVersion(kit); - return qtVersion; + return project ? QtKitAspect::qtVersion(project->activeKit()) : nullptr; } static std::pair<FilePath, QVersionNumber> evaluateLatestQmlls() @@ -134,7 +125,7 @@ static CommandLine commandLineForQmlls(Project *project) CommandLine result{executable, {}}; - if (auto *configuration = project->activeTarget()->activeBuildConfiguration()) + if (auto *configuration = project->activeBuildConfiguration()) result.addArgs({"-b", configuration->buildDirectory().path()}); // qmlls 6.8 and later require the import path diff --git a/src/plugins/qmljstools/qmljsmodelmanager.cpp b/src/plugins/qmljstools/qmljsmodelmanager.cpp index 4b97b3eaab2..4bda87f9c49 100644 --- a/src/plugins/qmljstools/qmljsmodelmanager.cpp +++ b/src/plugins/qmljstools/qmljsmodelmanager.cpp @@ -57,10 +57,7 @@ namespace Internal { static void setupProjectInfoQmlBundles(ModelManagerInterface::ProjectInfo &projectInfo) { - Target *activeTarget = nullptr; - if (projectInfo.project) - activeTarget = projectInfo.project->activeTarget(); - Kit *activeKit = activeTarget ? activeTarget->kit() : KitManager::defaultKit(); + Kit *activeKit = projectInfo.project ? projectInfo.project->activeKit() : KitManager::defaultKit(); const QHash<QString, QString> replacements = {{QLatin1String("$(QT_INSTALL_QML)"), projectInfo.qtQmlPath.toUrlishString()}}; for (IBundleProvider *bp : IBundleProvider::allBundleProviders()) @@ -115,7 +112,6 @@ ModelManagerInterface::ProjectInfo ModelManager::defaultProjectInfoForProject( ModelManagerInterface::ProjectInfo projectInfo; projectInfo.project = project; projectInfo.qmlDumpEnvironment = Utils::Environment::systemEnvironment(); - Target *activeTarget = nullptr; if (project) { using namespace Utils::Constants; const QSet<QString> qmlTypeNames = { QML_MIMETYPE , @@ -131,14 +127,14 @@ ModelManagerInterface::ProjectInfo ModelManager::defaultProjectInfoForProject( && qmlTypeNames.contains(Utils::mimeTypeForFile(fn->filePath(), MimeMatchMode::MatchExtension).name()); }); - activeTarget = project->activeTarget(); } - Kit *activeKit = activeTarget ? activeTarget->kit() : KitManager::defaultKit(); - QtSupport::QtVersion *qtVersion = QtSupport::QtKitAspect::qtVersion(activeKit); + Kit *activeKit = project ? project->activeKit() : nullptr; + Kit *kit = activeKit ? activeKit : KitManager::defaultKit(); + QtSupport::QtVersion *qtVersion = QtSupport::QtKitAspect::qtVersion(kit); projectInfo.tryQmlDump = false; - if (activeTarget) { + if (activeKit) { FilePath baseDir; auto addAppDir = [&baseDir, &projectInfo](const FilePath &mdir) { auto dir = mdir.cleanPath(); @@ -154,7 +150,7 @@ ModelManagerInterface::ProjectInfo ModelManager::defaultProjectInfoForProject( projectInfo.applicationDirectories.append(dir); }; - if (BuildConfiguration *bc = activeTarget->activeBuildConfiguration()) { + if (BuildConfiguration *bc = project->activeBuildConfiguration()) { // Append QML2_IMPORT_PATH if it is defined in build configuration. // It enables qmlplugindump to correctly dump custom plugins or other dependent // plugins that are not installed in default Qt qml installation directory. @@ -174,7 +170,7 @@ ModelManagerInterface::ProjectInfo ModelManager::defaultProjectInfoForProject( // For an IDE things are a bit more complicated because source files might be edited, // and the directory of the executable might be outdated. // Here we try to get the directory of the executable, adding all targets - auto *bs = activeTarget->buildSystem(); + auto *bs = project->activeBuildSystem(); const auto appTargets = bs ? bs->applicationTargets() : QList<BuildTargetInfo>{}; for (const auto &target : appTargets) { if (target.targetFilePath.isEmpty()) @@ -205,7 +201,7 @@ ModelManagerInterface::ProjectInfo ModelManager::defaultProjectInfoForProject( auto v = qtVersion->qtVersion(); projectInfo.qmllsPath = ModelManagerInterface::qmllsForBinPath(qtVersion->hostBinPath(), v); projectInfo.qtVersionString = qtVersion->qtVersionString(); - } else if (!activeKit || !activeKit->value(QtSupport::Constants::FLAGS_SUPPLIES_QTQUICK_IMPORT_PATH, false).toBool()) { + } else if (!kit || !kit->value(QtSupport::Constants::FLAGS_SUPPLIES_QTQUICK_IMPORT_PATH, false).toBool()) { projectInfo.qtQmlPath = FilePath::fromUserInput(QLibraryInfo::path(QLibraryInfo::Qml2ImportsPath)); projectInfo.qmllsPath = ModelManagerInterface::qmllsForBinPath( FilePath::fromUserInput(QLibraryInfo::path(QLibraryInfo::BinariesPath)), QLibraryInfo::version()); @@ -213,7 +209,7 @@ ModelManagerInterface::ProjectInfo ModelManager::defaultProjectInfoForProject( } projectInfo.qmlDumpPath.clear(); - const QtSupport::QtVersion *version = QtSupport::QtKitAspect::qtVersion(activeKit); + const QtSupport::QtVersion *version = QtSupport::QtKitAspect::qtVersion(kit); if (version && projectInfo.tryQmlDump) { projectInfo.qmlDumpPath = version->qmlplugindumpFilePath(); projectInfo.qmlDumpHasRelocatableFlag = version->hasQmlDumpWithRelocatableFlag(); diff --git a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp index e4564367e01..233a077ea9e 100644 --- a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp +++ b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp @@ -439,9 +439,9 @@ Utils::FilePath QmlBuildSystem::getStartupQmlFileWithFallback() const QmlBuildSystem *QmlBuildSystem::getStartupBuildSystem() { auto project = ProjectExplorer::ProjectManager::startupProject(); - if (project && project->activeTarget() && project->activeTarget()->buildSystem()) { + if (project && project->activeBuildSystem()) { return qobject_cast<QmlProjectManager::QmlBuildSystem *>( - project->activeTarget()->buildSystem()); + project->activeBuildSystem()); } return nullptr; } diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index 0741d9eeec3..265dece3097 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -76,11 +76,11 @@ void QmlProject::parsingFinished(const Target *target, bool success) // trigger only once disconnect(this, &QmlProject::anyParsingFinished, this, &QmlProject::parsingFinished); - if (!target || !success || !activeTarget()) + if (!target || !success || !activeBuildSystem()) return; const auto qmlBuildSystem = qobject_cast<QmlProjectManager::QmlBuildSystem *>( - activeTarget()->buildSystem()); + activeBuildSystem()); if (!qmlBuildSystem) return; diff --git a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp index a8021bf53ea..beb10be9baf 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp @@ -213,14 +213,8 @@ static QmlBuildSystem *qmlBuildSystemforFileNode(const FileNode *fileNode) if (!fileNode) return nullptr; - if (QmlProject *qmlProject = qobject_cast<QmlProject*>(fileNode->getProject())) { - Target *target = qmlProject->activeTarget(); - if (!target) - return nullptr; - - return qobject_cast<QmlProjectManager::QmlBuildSystem *>(target->buildSystem()); - - } + if (QmlProject *qmlProject = qobject_cast<QmlProject*>(fileNode->getProject())) + return qobject_cast<QmlProjectManager::QmlBuildSystem *>(qmlProject->activeBuildSystem()); return nullptr; } diff --git a/src/plugins/qtsupport/externaleditors.cpp b/src/plugins/qtsupport/externaleditors.cpp index c36b436730a..2c69bc22e77 100644 --- a/src/plugins/qtsupport/externaleditors.cpp +++ b/src/plugins/qtsupport/externaleditors.cpp @@ -183,9 +183,7 @@ static bool getEditorLaunchData(const CommandForQtVersion &commandForQtVersion, if (const Project *project = ProjectManager::projectForFile(filePath)) { data->workingDirectory = project->projectDirectory(); // active kit - if (const Target *target = project->activeTarget()) { - qtVersionsToCheck << QtSupport::QtKitAspect::qtVersion(target->kit()); - } + qtVersionsToCheck << QtSupport::QtKitAspect::qtVersion(project->activeKit()); // all kits of project qtVersionsToCheck += Utils::transform<QVector>(project->targets(), [](Target *t) { return QTC_GUARD(t) ? QtSupport::QtKitAspect::qtVersion(t->kit()) : nullptr; diff --git a/src/plugins/qtsupport/qscxmlcgenerator.cpp b/src/plugins/qtsupport/qscxmlcgenerator.cpp index 6690f0d610b..63ed32ae53e 100644 --- a/src/plugins/qtsupport/qscxmlcgenerator.cpp +++ b/src/plugins/qtsupport/qscxmlcgenerator.cpp @@ -88,8 +88,9 @@ Tasks QScxmlcGenerator::parseIssues(const QByteArray &processStderr) FilePath QScxmlcGenerator::command() const { - Target *target = project()->activeTarget(); - Kit *kit = target ? target->kit() : KitManager::defaultKit(); + Kit *kit = project()->activeKit(); + if (!kit) + kit = KitManager::defaultKit(); QtVersion *version = QtKitAspect::qtVersion(kit); if (!version) diff --git a/src/plugins/qtsupport/qtsupportplugin.cpp b/src/plugins/qtsupport/qtsupportplugin.cpp index 288dcb5f28f..6469345b3ae 100644 --- a/src/plugins/qtsupport/qtsupportplugin.cpp +++ b/src/plugins/qtsupport/qtsupportplugin.cpp @@ -178,9 +178,9 @@ void QtSupportPlugin::extensionsInitialized() static const auto currentQtVersion = []() -> const QtVersion * { ProjectExplorer::Project *project = ProjectExplorer::ProjectTree::currentProject(); - if (!project || !project->activeTarget()) + if (!project) return nullptr; - return QtKitAspect::qtVersion(project->activeTarget()->kit()); + return QtKitAspect::qtVersion(project->activeKit()); }; static const char kCurrentHostBins[] = "CurrentDocument:Project:QT_HOST_BINS"; expander->registerVariable( @@ -213,9 +213,9 @@ void QtSupportPlugin::extensionsInitialized() static const auto activeQtVersion = []() -> const QtVersion * { ProjectExplorer::Project *project = ProjectManager::startupProject(); - if (!project || !project->activeTarget()) + if (!project) return nullptr; - return QtKitAspect::qtVersion(project->activeTarget()->kit()); + return QtKitAspect::qtVersion(project->activeKit()); }; static const char kActiveHostBins[] = "ActiveProject:QT_HOST_BINS"; expander->registerVariable( @@ -251,8 +251,7 @@ void QtSupportPlugin::extensionsInitialized() if (filePath.isEmpty()) return links; const Project *project = ProjectManager::projectForFile(filePath); - Target *target = project ? project->activeTarget() : nullptr; - QtVersion *qt = target ? QtKitAspect::qtVersion(target->kit()) : nullptr; + QtVersion *qt = project ? QtKitAspect::qtVersion(project->activeKit()) : nullptr; if (!qt) return links; diff --git a/src/plugins/qtsupport/uicgenerator.cpp b/src/plugins/qtsupport/uicgenerator.cpp index f152242e958..3f584c57587 100644 --- a/src/plugins/qtsupport/uicgenerator.cpp +++ b/src/plugins/qtsupport/uicgenerator.cpp @@ -40,8 +40,9 @@ protected: FilePath UicGenerator::command() const { - Target *target = project()->activeTarget(); - Kit *kit = target ? target->kit() : KitManager::defaultKit(); + Kit *kit = project()->activeKit(); + if (!kit) + kit = KitManager::defaultKit(); QtVersion *version = QtKitAspect::qtVersion(kit); if (!version) diff --git a/src/plugins/valgrind/memchecktool.cpp b/src/plugins/valgrind/memchecktool.cpp index ac0406d0fa2..50593886cf7 100644 --- a/src/plugins/valgrind/memchecktool.cpp +++ b/src/plugins/valgrind/memchecktool.cpp @@ -908,9 +908,8 @@ void MemcheckTool::maybeActiveRunConfigurationChanged() ValgrindSettings *settings = nullptr; if (Project *project = ProjectManager::startupProject()) - if (Target *target = project->activeTarget()) - if (RunConfiguration *rc = target->activeRunConfiguration()) - settings = rc->currentSettings<ValgrindSettings>(ANALYZER_VALGRIND_SETTINGS); + if (RunConfiguration *rc = project->activeRunConfiguration()) + settings = rc->currentSettings<ValgrindSettings>(ANALYZER_VALGRIND_SETTINGS); if (!settings) // fallback to global settings settings = &globalSettings(); |