CMakePM: Ask for configuration save if the user has changed variables

If the use has forgotten to click "Apply Configuration Changes"
button in project settings but it tries to build or run the
project, then the "Apply Configuration Changes" dialog box pops
as a reminder.

Change-Id: I26728ee3c79af72125be3bede759620c2cf3d7a1
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Cristian Adam
2021-03-02 13:08:29 +01:00
parent daea0d4c07
commit 8f2db9fcbe
2 changed files with 8 additions and 11 deletions

View File

@@ -284,8 +284,7 @@ void CMakeBuildSystem::triggerParsing()
} }
if ((0 == (reparseParameters & REPARSE_FORCE_EXTRA_CONFIGURATION)) if ((0 == (reparseParameters & REPARSE_FORCE_EXTRA_CONFIGURATION))
&& !m_parameters.extraCMakeArguments.isEmpty()) { && mustApplyExtraArguments(m_parameters)) {
if (mustApplyExtraArguments())
reparseParameters |= REPARSE_FORCE_CMAKE_RUN | REPARSE_FORCE_EXTRA_CONFIGURATION; reparseParameters |= REPARSE_FORCE_CMAKE_RUN | REPARSE_FORCE_EXTRA_CONFIGURATION;
} }
@@ -438,15 +437,15 @@ void CMakeBuildSystem::setParametersAndRequestParse(const BuildDirParameters &pa
} }
} }
bool CMakeBuildSystem::mustApplyExtraArguments() const bool CMakeBuildSystem::mustApplyExtraArguments(const BuildDirParameters &parameters) const
{ {
if (m_parameters.extraCMakeArguments.isEmpty()) if (parameters.extraCMakeArguments.isEmpty())
return false; return false;
auto answer = QMessageBox::question(Core::ICore::mainWindow(), auto answer = QMessageBox::question(Core::ICore::mainWindow(),
tr("Apply configuration changes?"), tr("Apply configuration changes?"),
tr("Run CMake with \"%1\"?") tr("Run CMake with \"%1\"?")
.arg(m_parameters.extraCMakeArguments.join(" ")), .arg(parameters.extraCMakeArguments.join(" ")),
QMessageBox::Apply | QMessageBox::Discard, QMessageBox::Apply | QMessageBox::Discard,
QMessageBox::Apply); QMessageBox::Apply);
return answer == QMessageBox::Apply; return answer == QMessageBox::Apply;
@@ -506,12 +505,10 @@ bool CMakeBuildSystem::persistCMakeState()
qCDebug(cmakeBuildSystemLog) << "Checking whether build system needs to be persisted:" qCDebug(cmakeBuildSystemLog) << "Checking whether build system needs to be persisted:"
<< "workdir:" << parameters.workDirectory << "workdir:" << parameters.workDirectory
<< "buildDir:" << parameters.buildDirectory << "buildDir:" << parameters.buildDirectory
<< "Has extraargs:" << !parameters.extraCMakeArguments.isEmpty() << "Has extraargs:" << !parameters.extraCMakeArguments.isEmpty();
<< "must apply extra Args:"
<< mustApplyExtraArguments();
if (parameters.workDirectory == parameters.buildDirectory if (parameters.workDirectory == parameters.buildDirectory
&& !parameters.extraCMakeArguments.isEmpty() && mustApplyExtraArguments()) { && mustApplyExtraArguments(parameters)) {
reparseFlags = REPARSE_FORCE_EXTRA_CONFIGURATION; reparseFlags = REPARSE_FORCE_EXTRA_CONFIGURATION;
qCDebug(cmakeBuildSystemLog) << " -> must run CMake with extra arguments."; qCDebug(cmakeBuildSystemLog) << " -> must run CMake with extra arguments.";
} }

View File

@@ -116,7 +116,7 @@ private:
void setParametersAndRequestParse(const BuildDirParameters &parameters, void setParametersAndRequestParse(const BuildDirParameters &parameters,
const int reparseParameters); const int reparseParameters);
bool mustApplyExtraArguments() const; bool mustApplyExtraArguments(const BuildDirParameters &parameters) const;
// State handling: // State handling:
// Parser states: // Parser states: