forked from qt-creator/qt-creator
CMake: Pass BuildSystem instead of BuildConfig to BuildDirParams
Less indirections. Change-Id: I33ae36aa32aa8fab7223822fd9ec80c64d6d4651 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Cristian Adam <cristian.adam@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
@@ -26,6 +26,7 @@
|
|||||||
#include "builddirparameters.h"
|
#include "builddirparameters.h"
|
||||||
|
|
||||||
#include "cmakebuildconfiguration.h"
|
#include "cmakebuildconfiguration.h"
|
||||||
|
#include "cmakebuildsystem.h"
|
||||||
#include "cmakekitinformation.h"
|
#include "cmakekitinformation.h"
|
||||||
#include "cmakeprojectconstants.h"
|
#include "cmakeprojectconstants.h"
|
||||||
#include "cmakeprojectplugin.h"
|
#include "cmakeprojectplugin.h"
|
||||||
@@ -47,8 +48,10 @@ namespace Internal {
|
|||||||
|
|
||||||
BuildDirParameters::BuildDirParameters() = default;
|
BuildDirParameters::BuildDirParameters() = default;
|
||||||
|
|
||||||
BuildDirParameters::BuildDirParameters(CMakeBuildConfiguration *bc)
|
BuildDirParameters::BuildDirParameters(CMakeBuildSystem *buildSystem)
|
||||||
{
|
{
|
||||||
|
QTC_ASSERT(buildSystem, return);
|
||||||
|
auto bc = buildSystem->cmakeBuildConfiguration();
|
||||||
QTC_ASSERT(bc, return);
|
QTC_ASSERT(bc, return);
|
||||||
|
|
||||||
const Utils::MacroExpander *expander = bc->macroExpander();
|
const Utils::MacroExpander *expander = bc->macroExpander();
|
||||||
|
@@ -35,15 +35,15 @@
|
|||||||
#include <QString>
|
#include <QString>
|
||||||
|
|
||||||
namespace CMakeProjectManager {
|
namespace CMakeProjectManager {
|
||||||
|
|
||||||
class CMakeBuildConfiguration;
|
|
||||||
|
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
class BuildDirParameters {
|
class CMakeBuildSystem;
|
||||||
|
|
||||||
|
class BuildDirParameters
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
BuildDirParameters();
|
BuildDirParameters();
|
||||||
explicit BuildDirParameters(CMakeBuildConfiguration *bc);
|
explicit BuildDirParameters(CMakeBuildSystem *buildSystem);
|
||||||
BuildDirParameters(const BuildDirParameters &other);
|
BuildDirParameters(const BuildDirParameters &other);
|
||||||
BuildDirParameters &operator=(const BuildDirParameters &other);
|
BuildDirParameters &operator=(const BuildDirParameters &other);
|
||||||
|
|
||||||
|
@@ -412,14 +412,14 @@ bool CMakeBuildSystem::mustApplyConfigurationChangesArguments(const BuildDirPara
|
|||||||
|
|
||||||
void CMakeBuildSystem::runCMake()
|
void CMakeBuildSystem::runCMake()
|
||||||
{
|
{
|
||||||
BuildDirParameters parameters(cmakeBuildConfiguration());
|
BuildDirParameters parameters(this);
|
||||||
qCDebug(cmakeBuildSystemLog) << "Requesting parse due \"Run CMake\" command";
|
qCDebug(cmakeBuildSystemLog) << "Requesting parse due \"Run CMake\" command";
|
||||||
setParametersAndRequestParse(parameters, REPARSE_FORCE_CMAKE_RUN | REPARSE_URGENT);
|
setParametersAndRequestParse(parameters, REPARSE_FORCE_CMAKE_RUN | REPARSE_URGENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMakeBuildSystem::runCMakeAndScanProjectTree()
|
void CMakeBuildSystem::runCMakeAndScanProjectTree()
|
||||||
{
|
{
|
||||||
BuildDirParameters parameters(cmakeBuildConfiguration());
|
BuildDirParameters parameters(this);
|
||||||
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to \"Rescan Project\" command";
|
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to \"Rescan Project\" command";
|
||||||
setParametersAndRequestParse(parameters,
|
setParametersAndRequestParse(parameters,
|
||||||
REPARSE_FORCE_CMAKE_RUN | REPARSE_URGENT);
|
REPARSE_FORCE_CMAKE_RUN | REPARSE_URGENT);
|
||||||
@@ -427,7 +427,7 @@ void CMakeBuildSystem::runCMakeAndScanProjectTree()
|
|||||||
|
|
||||||
void CMakeBuildSystem::runCMakeWithExtraArguments()
|
void CMakeBuildSystem::runCMakeWithExtraArguments()
|
||||||
{
|
{
|
||||||
BuildDirParameters parameters(cmakeBuildConfiguration());
|
BuildDirParameters parameters(this);
|
||||||
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to \"Rescan Project\" command";
|
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to \"Rescan Project\" command";
|
||||||
setParametersAndRequestParse(parameters,
|
setParametersAndRequestParse(parameters,
|
||||||
REPARSE_FORCE_CMAKE_RUN | REPARSE_FORCE_EXTRA_CONFIGURATION
|
REPARSE_FORCE_CMAKE_RUN | REPARSE_FORCE_EXTRA_CONFIGURATION
|
||||||
@@ -436,7 +436,7 @@ void CMakeBuildSystem::runCMakeWithExtraArguments()
|
|||||||
|
|
||||||
void CMakeBuildSystem::stopCMakeRun()
|
void CMakeBuildSystem::stopCMakeRun()
|
||||||
{
|
{
|
||||||
qCDebug(cmakeBuildSystemLog) << cmakeBuildConfiguration()->displayName()
|
qCDebug(cmakeBuildSystemLog) << buildConfiguration()->displayName()
|
||||||
<< "stopping CMake's run";
|
<< "stopping CMake's run";
|
||||||
m_reader.stopCMakeRun();
|
m_reader.stopCMakeRun();
|
||||||
}
|
}
|
||||||
@@ -450,7 +450,7 @@ void CMakeBuildSystem::buildCMakeTarget(const QString &buildTarget)
|
|||||||
|
|
||||||
bool CMakeBuildSystem::persistCMakeState()
|
bool CMakeBuildSystem::persistCMakeState()
|
||||||
{
|
{
|
||||||
BuildDirParameters parameters(cmakeBuildConfiguration());
|
BuildDirParameters parameters(this);
|
||||||
QTC_ASSERT(parameters.isValid(), return false);
|
QTC_ASSERT(parameters.isValid(), return false);
|
||||||
|
|
||||||
const bool hadBuildDirectory = parameters.buildDirectory.exists();
|
const bool hadBuildDirectory = parameters.buildDirectory.exists();
|
||||||
@@ -808,32 +808,26 @@ void CMakeBuildSystem::wireUpConnections()
|
|||||||
connect(target(), &Target::activeBuildConfigurationChanged, this, [this]() {
|
connect(target(), &Target::activeBuildConfigurationChanged, this, [this]() {
|
||||||
// Build configuration has changed:
|
// Build configuration has changed:
|
||||||
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to active BC changed";
|
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to active BC changed";
|
||||||
setParametersAndRequestParse(BuildDirParameters(cmakeBuildConfiguration()),
|
setParametersAndRequestParse(BuildDirParameters(this), CMakeBuildSystem::REPARSE_DEFAULT);
|
||||||
CMakeBuildSystem::REPARSE_DEFAULT);
|
|
||||||
});
|
});
|
||||||
connect(project(), &Project::activeTargetChanged, this, [this]() {
|
connect(project(), &Project::activeTargetChanged, this, [this]() {
|
||||||
// Build configuration has changed:
|
// Build configuration has changed:
|
||||||
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to active target changed";
|
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to active target changed";
|
||||||
setParametersAndRequestParse(BuildDirParameters(cmakeBuildConfiguration()),
|
setParametersAndRequestParse(BuildDirParameters(this), CMakeBuildSystem::REPARSE_DEFAULT);
|
||||||
CMakeBuildSystem::REPARSE_DEFAULT);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// BuildConfiguration changed:
|
// BuildConfiguration changed:
|
||||||
connect(cmakeBuildConfiguration(), &CMakeBuildConfiguration::environmentChanged, this, [this]() {
|
connect(buildConfiguration(), &BuildConfiguration::environmentChanged, this, [this] {
|
||||||
// The environment on our BC has changed, force CMake run to catch up with possible changes
|
// The environment on our BC has changed, force CMake run to catch up with possible changes
|
||||||
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to environment change";
|
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to environment change";
|
||||||
setParametersAndRequestParse(BuildDirParameters(cmakeBuildConfiguration()),
|
setParametersAndRequestParse(BuildDirParameters(this), CMakeBuildSystem::REPARSE_FORCE_CMAKE_RUN);
|
||||||
CMakeBuildSystem::REPARSE_FORCE_CMAKE_RUN);
|
|
||||||
});
|
});
|
||||||
connect(cmakeBuildConfiguration(),
|
connect(buildConfiguration(), &BuildConfiguration::buildDirectoryChanged, this, [this] {
|
||||||
&CMakeBuildConfiguration::buildDirectoryChanged,
|
|
||||||
this,
|
|
||||||
[this]() {
|
|
||||||
// The build directory of our BC has changed:
|
// The build directory of our BC has changed:
|
||||||
// Does the directory contain a CMakeCache ? Existing build, just parse
|
// Does the directory contain a CMakeCache ? Existing build, just parse
|
||||||
// No CMakeCache? Run with initial arguments!
|
// No CMakeCache? Run with initial arguments!
|
||||||
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to build directory change";
|
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to build directory change";
|
||||||
const BuildDirParameters parameters(cmakeBuildConfiguration());
|
const BuildDirParameters parameters(this);
|
||||||
const FilePath cmakeCacheTxt = parameters.buildDirectory.pathAppended("CMakeCache.txt");
|
const FilePath cmakeCacheTxt = parameters.buildDirectory.pathAppended("CMakeCache.txt");
|
||||||
const bool hasCMakeCache = QFile::exists(cmakeCacheTxt.toString());
|
const bool hasCMakeCache = QFile::exists(cmakeCacheTxt.toString());
|
||||||
const auto options = ReparseParameters(
|
const auto options = ReparseParameters(
|
||||||
@@ -848,25 +842,24 @@ void CMakeBuildSystem::wireUpConnections()
|
|||||||
cmakeBuildConfiguration()->setCMakeBuildType(cmakeBuildTypeName, true);
|
cmakeBuildConfiguration()->setCMakeBuildType(cmakeBuildTypeName, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setParametersAndRequestParse(BuildDirParameters(cmakeBuildConfiguration()), options);
|
setParametersAndRequestParse(BuildDirParameters(this), options);
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(project(), &Project::projectFileIsDirty, this, [this]() {
|
connect(project(), &Project::projectFileIsDirty, this, [this] {
|
||||||
if (cmakeBuildConfiguration()->isActive() && !isParsing()) {
|
if (buildConfiguration()->isActive() && !isParsing()) {
|
||||||
const auto cmake = CMakeKitAspect::cmakeTool(cmakeBuildConfiguration()->kit());
|
const auto cmake = CMakeKitAspect::cmakeTool(cmakeBuildConfiguration()->kit());
|
||||||
if (cmake && cmake->isAutoRun()) {
|
if (cmake && cmake->isAutoRun()) {
|
||||||
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to dirty project file";
|
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to dirty project file";
|
||||||
setParametersAndRequestParse(BuildDirParameters(cmakeBuildConfiguration()),
|
setParametersAndRequestParse(BuildDirParameters(this),
|
||||||
CMakeBuildSystem::REPARSE_FORCE_CMAKE_RUN);
|
CMakeBuildSystem::REPARSE_FORCE_CMAKE_RUN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Force initial parsing run:
|
// Force initial parsing run:
|
||||||
if (cmakeBuildConfiguration()->isActive()) {
|
if (buildConfiguration()->isActive()) {
|
||||||
qCDebug(cmakeBuildSystemLog) << "Initial run:";
|
qCDebug(cmakeBuildSystemLog) << "Initial run:";
|
||||||
setParametersAndRequestParse(BuildDirParameters(cmakeBuildConfiguration()),
|
setParametersAndRequestParse(BuildDirParameters(this), CMakeBuildSystem::REPARSE_DEFAULT);
|
||||||
CMakeBuildSystem::REPARSE_DEFAULT);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -895,7 +888,7 @@ void CMakeBuildSystem::becameDirty()
|
|||||||
if (isParsing())
|
if (isParsing())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
setParametersAndRequestParse(BuildDirParameters(cmakeBuildConfiguration()), REPARSE_DEFAULT);
|
setParametersAndRequestParse(BuildDirParameters(this), REPARSE_DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMakeBuildSystem::updateReparseParameters(const int parameters)
|
void CMakeBuildSystem::updateReparseParameters(const int parameters)
|
||||||
@@ -919,12 +912,12 @@ void CMakeBuildSystem::runCTest()
|
|||||||
}
|
}
|
||||||
qCDebug(cmakeBuildSystemLog) << "Requesting ctest run after cmake run";
|
qCDebug(cmakeBuildSystemLog) << "Requesting ctest run after cmake run";
|
||||||
|
|
||||||
const BuildDirParameters parameters(cmakeBuildConfiguration());
|
const BuildDirParameters parameters(this);
|
||||||
QTC_ASSERT(parameters.isValid(), return);
|
QTC_ASSERT(parameters.isValid(), return);
|
||||||
|
|
||||||
const CommandLine cmd { m_ctestPath, { "-N", "--show-only=json-v1" } };
|
const CommandLine cmd { m_ctestPath, { "-N", "--show-only=json-v1" } };
|
||||||
const FilePath workingDirectory = buildDirectory(parameters);
|
const FilePath workingDirectory = buildDirectory(parameters);
|
||||||
const Environment environment = cmakeBuildConfiguration()->environment();
|
const Environment environment = buildConfiguration()->environment();
|
||||||
|
|
||||||
auto future = Utils::runAsync([cmd, workingDirectory, environment]
|
auto future = Utils::runAsync([cmd, workingDirectory, environment]
|
||||||
(QFutureInterface<QByteArray> &futureInterface) {
|
(QFutureInterface<QByteArray> &futureInterface) {
|
||||||
|
Reference in New Issue
Block a user