diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2020-08-11 16:36:24 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2020-08-12 09:13:33 +0000 |
commit | a7305a60e02f78b891a801c1a8a139732614c9dd (patch) | |
tree | a0f3499d91b76a75653bed445c2df8898386a4d4 | |
parent | 0615d0ec069b9a3942aeae7ef175b2a2f5894aef (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.cpp | 18 | ||||
-rw-r--r-- | src/plugins/cmakeprojectmanager/cmakebuildsystem.h | 2 |
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 ¶meters); void stopParsingAndClearState(); |