MakeStepConfigWidget::MakeStepConfigWidget(MakeStep *makeStep) : m_makeStep(makeStep) { QFormLayout *fl = new QFormLayout(this); fl->setMargin(0); fl->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); setLayout(fl); m_additionalArguments = new QLineEdit(this); fl->addRow(tr("Additional arguments:"), m_additionalArguments); m_additionalArguments->setText(m_makeStep->additionalArguments()); m_buildTargetsList = new QListWidget; m_buildTargetsList->setMinimumHeight(200); fl->addRow(tr("Targets:"), m_buildTargetsList); // TODO update this list also on rescans of the CMakeLists.txt // TODO shouldn't be accessing project CMakeProject *pro = m_makeStep->cmakeBuildConfiguration()->cmakeTarget()->cmakeProject(); foreach(const QString& buildTarget, pro->buildTargetTitles()) { QListWidgetItem *item = new QListWidgetItem(buildTarget, m_buildTargetsList); item->setFlags(item->flags() | Qt::ItemIsUserCheckable); item->setCheckState(m_makeStep->buildsBuildTarget(item->text()) ? Qt::Checked : Qt::Unchecked); } updateDetails(); connect(m_additionalArguments, SIGNAL(textEdited(const QString &)), this, SLOT(additionalArgumentsEdited())); connect(m_buildTargetsList, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(itemChanged(QListWidgetItem*))); connect(ProjectExplorer::ProjectExplorerPlugin::instance(), SIGNAL(settingsChanged()), this, SLOT(updateDetails())); connect(pro, SIGNAL(buildTargetsChanged()), this, SLOT(buildTargetsChanged())); }
bool CMakeRunConfigurationFactory::canCreate(ProjectExplorer::Target *parent, const Core::Id id) const { if (!canHandle(parent)) return false; CMakeProject *project = static_cast<CMakeProject *>(parent->project()); return project->hasBuildTarget(buildTargetFromId(id)); }
CMakeBuildConfiguration::CMakeBuildConfiguration(ProjectExplorer::Target *parent) : BuildConfiguration(parent, Core::Id(Constants::CMAKE_BC_ID)), m_useNinja(false) { CMakeProject *project = static_cast<CMakeProject *>(parent->project()); m_buildDirectory = project->shadowBuildDirectory(project->document()->fileName(), parent->kit(), displayName()); }
CMakeBuildConfiguration::CMakeBuildConfiguration(ProjectExplorer::Target *parent) : BuildConfiguration(parent, Core::Id(Constants::CMAKE_BC_ID)), m_useNinja(false) { CMakeProject *project = static_cast<CMakeProject *>(parent->project()); setBuildDirectory(Utils::FileName::fromString(project->shadowBuildDirectory(project->projectFilePath(), parent->kit(), displayName()))); }
ProjectExplorer::RunConfiguration *CMakeRunConfigurationFactory::doCreate(ProjectExplorer::Target *parent, const Core::Id id) { CMakeProject *project = static_cast<CMakeProject *>(parent->project()); const QString title(buildTargetFromId(id)); const CMakeBuildTarget &ct = project->buildTargetForTitle(title); return new CMakeRunConfiguration(parent, id, ct.executable, ct.workingDirectory, ct.title); }
foreach (ProjectExplorer::Project *p, ProjectExplorer::SessionManager::projects()) { CMakeProject *cmakeProject = qobject_cast<CMakeProject *>(p); if (cmakeProject) { if (cmakeProject->isProjectFile(document()->filePath())) { ProjectExplorer::ProjectExplorerPlugin::instance()->buildProject(cmakeProject); break; } } }
// used to show the list of possible additons to a project, returns a list of ids QList<Core::Id> CMakeRunConfigurationFactory::availableCreationIds(ProjectExplorer::Target *parent) const { if (!canHandle(parent)) return QList<Core::Id>(); CMakeProject *project = static_cast<CMakeProject *>(parent->project()); QList<Core::Id> allIds; foreach (const QString &buildTarget, project->buildTargetTitles(true)) allIds << idFromBuildTarget(buildTarget); return allIds; }
void CMakeManager::rescanProject(Project *project) { if (!project) return; CMakeProject *cmakeProject = qobject_cast<CMakeProject *>(project); if (!cmakeProject || !cmakeProject->activeTarget() || !cmakeProject->activeTarget()->activeBuildConfiguration()) return; cmakeProject->scanProjectTree(); }
CMakeBuildConfiguration *CMakeBuildConfigurationFactory::create(ProjectExplorer::Target *parent, const Core::Id id, const QString &name) { if (!canCreate(parent, id)) return 0; CMakeProject *project = static_cast<CMakeProject *>(parent->project()); bool ok = true; QString buildConfigurationName = name; if (buildConfigurationName.isEmpty()) buildConfigurationName = QInputDialog::getText(0, tr("New Configuration"), tr("New configuration name:"), QLineEdit::Normal, QString(), &ok); buildConfigurationName = buildConfigurationName.trimmed(); if (!ok || buildConfigurationName.isEmpty()) return 0; CMakeOpenProjectWizard::BuildInfo info; info.sourceDirectory = project->projectDirectory(); info.environment = Utils::Environment::systemEnvironment(); parent->kit()->addToEnvironment(info.environment); info.buildDirectory = project->defaultBuildDirectory(); info.kit = parent->kit(); info.useNinja = false; // This is ignored anyway CMakeOpenProjectWizard copw(project->projectManager(), CMakeOpenProjectWizard::ChangeDirectory, info); if (copw.exec() != QDialog::Accepted) return 0; CMakeBuildConfiguration *bc = new CMakeBuildConfiguration(parent); bc->setDisplayName(buildConfigurationName); ProjectExplorer::BuildStepList *buildSteps = bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); ProjectExplorer::BuildStepList *cleanSteps = bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN); MakeStep *makeStep = new MakeStep(buildSteps); buildSteps->insertStep(0, makeStep); MakeStep *cleanMakeStep = new MakeStep(cleanSteps); cleanSteps->insertStep(0, cleanMakeStep); cleanMakeStep->setAdditionalArguments("clean"); cleanMakeStep->setClean(true); bc->setBuildDirectory(copw.buildDirectory()); bc->setUseNinja(copw.useNinja()); // Default to all if (project->hasBuildTarget("all")) makeStep->setBuildTarget("all", true); return bc; }
void CMakeManager::runCMake(Project *project) { if (!project) return; CMakeProject *cmakeProject = qobject_cast<CMakeProject *>(project); if (!cmakeProject || !cmakeProject->activeTarget() || !cmakeProject->activeTarget()->activeBuildConfiguration()) return; if (!ProjectExplorerPlugin::saveModifiedFiles()) return; cmakeProject->runCMake(); }
void CMakeBuildSettingsWidget::runCMake() { if (!ProjectExplorer::ProjectExplorerPlugin::saveModifiedFiles()) return; CMakeProject *project = static_cast<CMakeProject *>(m_buildConfiguration->target()->project()); CMakeManager *manager = static_cast<CMakeManager *>(project->projectManager()); CMakeBuildInfo info(m_buildConfiguration); CMakeOpenProjectWizard copw(Core::ICore::mainWindow(), manager, CMakeOpenProjectWizard::WantToUpdate, &info); if (copw.exec() == QDialog::Accepted) project->parseCMakeLists(); }
void CMakeEditor::build() { QList<ProjectExplorer::Project *> projects = ProjectExplorer::ProjectExplorerPlugin::instance()->session()->projects(); foreach (ProjectExplorer::Project *p, projects) { CMakeProject *cmakeProject = qobject_cast<CMakeProject *>(p); if (cmakeProject) { if (cmakeProject->isProjectFile(document()->fileName())) { ProjectExplorer::ProjectExplorerPlugin::instance()->buildProject(cmakeProject); break; } } }
void MakeStepConfigWidget::buildTargetsChanged() { disconnect(m_buildTargetsList, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(itemChanged(QListWidgetItem*))); m_buildTargetsList->clear(); CMakeProject *pro = m_makeStep->cmakeBuildConfiguration()->cmakeTarget()->cmakeProject(); foreach(const QString& buildTarget, pro->buildTargetTitles()) { QListWidgetItem *item = new QListWidgetItem(buildTarget, m_buildTargetsList); item->setFlags(item->flags() | Qt::ItemIsUserCheckable); item->setCheckState(m_makeStep->buildsBuildTarget(item->text()) ? Qt::Checked : Qt::Unchecked); } connect(m_buildTargetsList, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(itemChanged(QListWidgetItem*))); updateSummary(); }
void CMakeBuildSettingsWidget::openChangeBuildDirectoryDialog() { CMakeProject *project = static_cast<CMakeProject *>(m_buildConfiguration->target()->project()); CMakeManager *manager = static_cast<CMakeManager *>(project->projectManager()); CMakeBuildInfo info(m_buildConfiguration); CMakeOpenProjectWizard copw(Core::ICore::mainWindow(), manager, CMakeOpenProjectWizard::ChangeDirectory, &info); if (copw.exec() == QDialog::Accepted) { project->changeBuildDirectory(m_buildConfiguration, copw.buildDirectory()); m_buildConfiguration->setUseNinja(copw.useNinja()); m_pathLineEdit->setText(m_buildConfiguration->rawBuildDirectory().toString()); } }
void CMakeLocatorFilter::prepareSearch(const QString &entry) { m_result.clear(); foreach (Project *p, SessionManager::projects()) { CMakeProject *cmakeProject = qobject_cast<CMakeProject *>(p); if (cmakeProject) { foreach (const CMakeBuildTarget &ct, cmakeProject->buildTargets()) { if (ct.title.contains(entry)) { Core::LocatorFilterEntry entry(this, ct.title, cmakeProject->projectFilePath().toString()); entry.extraInfo = FileUtils::shortNativePath(cmakeProject->projectFilePath()); m_result.append(entry); } } } }
MakeStepConfigWidget::MakeStepConfigWidget(MakeStep *makeStep) : m_makeStep(makeStep) { QFormLayout *fl = new QFormLayout(this); fl->setMargin(0); fl->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); setLayout(fl); m_makePathChooser = new Utils::PathChooser(this); m_makePathChooser->setExpectedKind(Utils::PathChooser::ExistingCommand); m_makePathChooser->setBaseDirectory(Utils::PathChooser::homePath()); m_makePathChooser->setHistoryCompleter(QLatin1String("PE.MakeCommand.History")); m_makePathChooser->setPath(m_makeStep->userMakeCommand()); fl->addRow(tr("Override command:"), m_makePathChooser); m_additionalArguments = new QLineEdit(this); fl->addRow(tr("Additional arguments:"), m_additionalArguments); m_additionalArguments->setText(m_makeStep->additionalArguments()); m_buildTargetsList = new QListWidget; m_buildTargetsList->setFrameStyle(QFrame::NoFrame); m_buildTargetsList->setMinimumHeight(200); QFrame *frame = new QFrame(this); frame->setFrameStyle(QFrame::StyledPanel); QVBoxLayout *frameLayout = new QVBoxLayout(frame); frameLayout->setMargin(0); frameLayout->addWidget(Core::ItemViewFind::createSearchableWrapper(m_buildTargetsList, Core::ItemViewFind::LightColored)); fl->addRow(tr("Targets:"), frame); auto itemAddRunConfigurationArgument = new QListWidgetItem(tr(ADD_RUNCONFIGURATION_TEXT), m_buildTargetsList); itemAddRunConfigurationArgument->setFlags(itemAddRunConfigurationArgument->flags() | Qt::ItemIsUserCheckable); itemAddRunConfigurationArgument->setCheckState(m_makeStep->addRunConfigurationArgument() ? Qt::Checked : Qt::Unchecked); QFont f; f.setItalic(true); itemAddRunConfigurationArgument->setFont(f); CMakeProject *pro = static_cast<CMakeProject *>(m_makeStep->project()); QStringList targetList = pro->buildTargetTitles(); targetList.sort(); foreach (const QString &buildTarget, targetList) { QListWidgetItem *item = new QListWidgetItem(buildTarget, m_buildTargetsList); item->setFlags(item->flags() | Qt::ItemIsUserCheckable); item->setCheckState(m_makeStep->buildsBuildTarget(item->text()) ? Qt::Checked : Qt::Unchecked); }
void CMakeManager::runCMake(ProjectExplorer::Project *project) { if (!project) return; CMakeProject *cmakeProject = qobject_cast<CMakeProject *>(project); if (!cmakeProject || !cmakeProject->activeTarget() || !cmakeProject->activeTarget()->activeBuildConfiguration()) return; CMakeBuildConfiguration *bc = static_cast<CMakeBuildConfiguration *>(cmakeProject->activeTarget()->activeBuildConfiguration()); CMakeOpenProjectWizard copw(this, CMakeOpenProjectWizard::WantToUpdate, CMakeOpenProjectWizard::BuildInfo(bc)); if (copw.exec() == QDialog::Accepted) cmakeProject->parseCMakeLists(); }
void CMakeProjectPlugin::updateContextActions(ProjectExplorer::Node *node, ProjectExplorer::Project *project) { CMakeTargetNode *targetNode = dynamic_cast<CMakeTargetNode *>(node); // as targetNode can be deleted while the menu is open, we keep only the const QString targetDisplayName = targetNode ? targetNode->displayName() : QString(); CMakeProject *cmProject = dynamic_cast<CMakeProject *>(project); // Build Target: disconnect(m_actionConnect); m_buildTargetContextAction->setParameter(targetDisplayName); m_buildTargetContextAction->setEnabled(targetNode); m_buildTargetContextAction->setVisible(targetNode); if (cmProject && targetNode) { m_actionConnect = connect(m_buildTargetContextAction, &Utils::ParameterAction::triggered, cmProject, [cmProject, targetDisplayName]() { cmProject->buildCMakeTarget(targetDisplayName); }); } }
void CMakeManager::runCMake(ProjectExplorer::Project *project) { if (!project) return; CMakeProject *cmakeProject = qobject_cast<CMakeProject *>(project); if (!cmakeProject || !cmakeProject->activeTarget() || !cmakeProject->activeTarget()->activeBuildConfiguration()) return; if (!ProjectExplorer::ProjectExplorerPlugin::saveModifiedFiles()) return; CMakeBuildConfiguration *bc = static_cast<CMakeBuildConfiguration *>(cmakeProject->activeTarget()->activeBuildConfiguration()); CMakeBuildInfo info(bc); CMakeOpenProjectWizard copw(Core::ICore::mainWindow(), this, CMakeOpenProjectWizard::WantToUpdate, &info); if (copw.exec() == QDialog::Accepted) cmakeProject->parseCMakeLists(); }
void CMakeManager::runCMake(ProjectExplorer::Project *project) { if (!project) return; CMakeProject *cmakeProject = qobject_cast<CMakeProject *>(project); if (!cmakeProject) return; if (!cmakeProject->activeTarget()) return; if (!cmakeProject->activeTarget()->activeBuildConfiguration()) return; CMakeBuildConfiguration *bc = cmakeProject->activeTarget()->activeBuildConfiguration(); CMakeOpenProjectWizard copw(this, cmakeProject->projectDirectory(), bc->buildDirectory(), CMakeOpenProjectWizard::WantToUpdate, bc->environment()); if (copw.exec() == QDialog::Accepted) { cmakeProject->parseCMakeLists(); } }