aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2020-08-11 16:36:24 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2020-08-12 09:13:33 +0000
commita7305a60e02f78b891a801c1a8a139732614c9dd (patch)
treea0f3499d91b76a75653bed445c2df8898386a4d4
parent0615d0ec069b9a3942aeae7ef175b2a2f5894aef (diff)
CMake: Parse project on initial load
When opening a project for the first time, the project has already been added to the session when the BuildSystem object is created, whereas the code expected a different order. Fixes: QTCREATORBUG-24318 Change-Id: I8ccfeab7da4e566670f61bfe677a293033bdfe44 Reviewed-by: hjk <hjk@qt.io>
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp18
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildsystem.h2
2 files changed, 9 insertions, 11 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp
index 6a55730d50..f681a83d06 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp
@@ -195,10 +195,7 @@ CMakeBuildSystem::CMakeBuildSystem(CMakeBuildConfiguration *bc)
connect(&m_reader, &FileApiReader::errorOccurred, this, &CMakeBuildSystem::handleParsingFailed);
connect(&m_reader, &FileApiReader::dirty, this, &CMakeBuildSystem::becameDirty);
- connect(SessionManager::instance(),
- &SessionManager::projectAdded,
- this,
- &CMakeBuildSystem::wireUpConnections);
+ wireUpConnections();
}
CMakeBuildSystem::~CMakeBuildSystem()
@@ -712,13 +709,8 @@ void CMakeBuildSystem::handleParsingFailed(const QString &msg)
combineScanAndParse();
}
-void CMakeBuildSystem::wireUpConnections(const Project *p)
+void CMakeBuildSystem::wireUpConnections()
{
- if (p != project())
- return; // That's not us...
-
- disconnect(SessionManager::instance(), nullptr, this, nullptr);
-
// At this point the entire project will be fully configured, so let's connect everything and
// trigger an initial parser run
@@ -740,6 +732,12 @@ void CMakeBuildSystem::wireUpConnections(const Project *p)
setParametersAndRequestParse(BuildDirParameters(cmakeBuildConfiguration()),
CMakeBuildSystem::REPARSE_DEFAULT);
});
+ connect(project(), &Project::activeTargetChanged, this, [this]() {
+ // Build configuration has changed:
+ qCDebug(cmakeBuildSystemLog) << "Requesting parse due to active target changed";
+ setParametersAndRequestParse(BuildDirParameters(cmakeBuildConfiguration()),
+ CMakeBuildSystem::REPARSE_DEFAULT);
+ });
// BuildConfiguration changed:
connect(cmakeBuildConfiguration(), &CMakeBuildConfiguration::environmentChanged, this, [this]() {
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h
index 86d77d7a7d..e4c69a7d3c 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h
+++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h
@@ -134,7 +134,7 @@ private:
void handleParsingSucceeded();
void handleParsingFailed(const QString &msg);
- void wireUpConnections(const ProjectExplorer::Project *p);
+ void wireUpConnections();
Utils::FilePath workDirectory(const BuildDirParameters &parameters);
void stopParsingAndClearState();