forked from qt-creator/qt-creator
ProjectExplorer: Use function object for special build config init
Change-Id: I5da0f28ee1a64f8d9a3145f059019be702bee463 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -53,26 +53,25 @@ AutotoolsBuildConfiguration::AutotoolsBuildConfiguration(Target *parent, Core::I
|
|||||||
setBuildDirectory(Utils::FilePath::fromString("/<foobar>"));
|
setBuildDirectory(Utils::FilePath::fromString("/<foobar>"));
|
||||||
setBuildDirectoryHistoryCompleter("AutoTools.BuildDir.History");
|
setBuildDirectoryHistoryCompleter("AutoTools.BuildDir.History");
|
||||||
setConfigWidgetDisplayName(tr("Autotools Manager"));
|
setConfigWidgetDisplayName(tr("Autotools Manager"));
|
||||||
}
|
|
||||||
|
|
||||||
void AutotoolsBuildConfiguration::initialize()
|
setInitializer([this] {
|
||||||
{
|
// ### Build Steps Build ###
|
||||||
// ### Build Steps Build ###
|
// autogen.sh or autoreconf
|
||||||
// autogen.sh or autoreconf
|
QFile autogenFile(target()->project()->projectDirectory().toString() + "/autogen.sh");
|
||||||
QFile autogenFile(target()->project()->projectDirectory().toString() + "/autogen.sh");
|
if (autogenFile.exists())
|
||||||
if (autogenFile.exists())
|
buildSteps()->appendStep(Constants::AUTOGEN_STEP_ID);
|
||||||
buildSteps()->appendStep(Constants::AUTOGEN_STEP_ID);
|
else
|
||||||
else
|
buildSteps()->appendStep(Constants::AUTORECONF_STEP_ID);
|
||||||
buildSteps()->appendStep(Constants::AUTORECONF_STEP_ID);
|
|
||||||
|
|
||||||
// ./configure.
|
// ./configure.
|
||||||
buildSteps()->appendStep(Constants::CONFIGURE_STEP_ID);
|
buildSteps()->appendStep(Constants::CONFIGURE_STEP_ID);
|
||||||
|
|
||||||
// make
|
// make
|
||||||
buildSteps()->appendStep(Constants::MAKE_STEP_ID);
|
buildSteps()->appendStep(Constants::MAKE_STEP_ID);
|
||||||
|
|
||||||
// ### Build Steps Clean ###
|
// ### Build Steps Clean ###
|
||||||
cleanSteps()->appendStep(Constants::MAKE_STEP_ID);
|
cleanSteps()->appendStep(Constants::MAKE_STEP_ID);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -38,8 +38,6 @@ class AutotoolsBuildConfiguration : public ProjectExplorer::BuildConfiguration
|
|||||||
|
|
||||||
friend class ProjectExplorer::BuildConfigurationFactory;
|
friend class ProjectExplorer::BuildConfigurationFactory;
|
||||||
AutotoolsBuildConfiguration(ProjectExplorer::Target *parent, Core::Id id);
|
AutotoolsBuildConfiguration(ProjectExplorer::Target *parent, Core::Id id);
|
||||||
|
|
||||||
void initialize() override;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class AutotoolsBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory
|
class AutotoolsBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory
|
||||||
|
@@ -82,14 +82,82 @@ Q_LOGGING_CATEGORY(cmakeBuildConfigurationLog, "qtc.cmake.bc", QtWarningMsg);
|
|||||||
|
|
||||||
const char CONFIGURATION_KEY[] = "CMake.Configuration";
|
const char CONFIGURATION_KEY[] = "CMake.Configuration";
|
||||||
|
|
||||||
CMakeBuildConfiguration::CMakeBuildConfiguration(Target *parent, Core::Id id)
|
CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Core::Id id)
|
||||||
: BuildConfiguration(parent, id)
|
: BuildConfiguration(target, id)
|
||||||
{
|
{
|
||||||
m_buildSystem = new CMakeBuildSystem(this);
|
m_buildSystem = new CMakeBuildSystem(this);
|
||||||
setBuildDirectory(shadowBuildDirectory(project()->projectFilePath(),
|
setBuildDirectory(shadowBuildDirectory(project()->projectFilePath(),
|
||||||
target()->kit(),
|
target->kit(),
|
||||||
displayName(),
|
displayName(),
|
||||||
BuildConfiguration::Unknown));
|
BuildConfiguration::Unknown));
|
||||||
|
|
||||||
|
setInitializer([this, target] {
|
||||||
|
buildSteps()->appendStep(Constants::CMAKE_BUILD_STEP_ID);
|
||||||
|
|
||||||
|
if (DeviceTypeKitAspect::deviceTypeId(target->kit())
|
||||||
|
== Android::Constants::ANDROID_DEVICE_TYPE) {
|
||||||
|
buildSteps()->appendStep(Android::Constants::ANDROID_BUILD_APK_ID);
|
||||||
|
const auto &bs = buildSteps()->steps().constLast();
|
||||||
|
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"ANDROID_NATIVE_API_LEVEL",
|
||||||
|
CMakeProjectManager::CMakeConfigItem::Type::STRING,
|
||||||
|
"Android native API level",
|
||||||
|
bs->data(Android::Constants::AndroidNdkPlatform).toString().toUtf8()});
|
||||||
|
auto ndkLocation = bs->data(Android::Constants::NdkLocation).value<FilePath>();
|
||||||
|
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"ANDROID_NDK",
|
||||||
|
CMakeProjectManager::CMakeConfigItem::Type::PATH,
|
||||||
|
"Android NDK PATH",
|
||||||
|
ndkLocation.toString().toUtf8()});
|
||||||
|
|
||||||
|
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"CMAKE_TOOLCHAIN_FILE",
|
||||||
|
CMakeProjectManager::CMakeConfigItem::Type::PATH,
|
||||||
|
"Android CMake toolchain file",
|
||||||
|
ndkLocation.pathAppended("build/cmake/android.toolchain.cmake").toString().toUtf8()});
|
||||||
|
|
||||||
|
auto androidAbis = bs->data(Android::Constants::AndroidABIs).toStringList();
|
||||||
|
QString preferredAbi;
|
||||||
|
if (androidAbis.contains("armeabi-v7a")) {
|
||||||
|
preferredAbi = "armeabi-v7a";
|
||||||
|
} else if (androidAbis.isEmpty() || androidAbis.contains("arm64-v8a")) {
|
||||||
|
preferredAbi = "arm64-v8a";
|
||||||
|
} else {
|
||||||
|
preferredAbi = androidAbis.first();
|
||||||
|
}
|
||||||
|
// FIXME: configmodel doesn't care about our androidAbis list...
|
||||||
|
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"ANDROID_ABI",
|
||||||
|
CMakeProjectManager::CMakeConfigItem::Type::STRING,
|
||||||
|
"Android ABI",
|
||||||
|
preferredAbi.toLatin1(),
|
||||||
|
androidAbis});
|
||||||
|
|
||||||
|
QtSupport::BaseQtVersion *qt = QtSupport::QtKitAspect::qtVersion(target->kit());
|
||||||
|
if (qt->qtVersion() >= QtSupport::QtVersionNumber{5, 14, 0}) {
|
||||||
|
auto sdkLocation = bs->data(Android::Constants::SdkLocation).value<FilePath>();
|
||||||
|
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"ANDROID_SDK",
|
||||||
|
CMakeProjectManager::CMakeConfigItem::Type::PATH,
|
||||||
|
"Android SDK PATH",
|
||||||
|
sdkLocation.toString().toUtf8()});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"ANDROID_STL",
|
||||||
|
CMakeProjectManager::CMakeConfigItem::Type::STRING,
|
||||||
|
"Android STL",
|
||||||
|
"c++_shared"});
|
||||||
|
|
||||||
|
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"CMAKE_FIND_ROOT_PATH", "%{Qt:QT_INSTALL_PREFIX}"});
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanSteps()->appendStep(Constants::CMAKE_BUILD_STEP_ID);
|
||||||
|
|
||||||
|
if (initialBuildDirectory().isEmpty()) {
|
||||||
|
setBuildDirectory(shadowBuildDirectory(target->project()->projectFilePath(),
|
||||||
|
target->kit(),
|
||||||
|
initialDisplayName(),
|
||||||
|
initialBuildType()));
|
||||||
|
}
|
||||||
|
auto info = extraInfo().value<CMakeExtraBuildInfo>();
|
||||||
|
setConfigurationForCMake(info.configuration);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
CMakeBuildConfiguration::~CMakeBuildConfiguration()
|
CMakeBuildConfiguration::~CMakeBuildConfiguration()
|
||||||
@@ -97,75 +165,6 @@ CMakeBuildConfiguration::~CMakeBuildConfiguration()
|
|||||||
delete m_buildSystem;
|
delete m_buildSystem;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMakeBuildConfiguration::initialize()
|
|
||||||
{
|
|
||||||
buildSteps()->appendStep(Constants::CMAKE_BUILD_STEP_ID);
|
|
||||||
|
|
||||||
if (DeviceTypeKitAspect::deviceTypeId(target()->kit())
|
|
||||||
== Android::Constants::ANDROID_DEVICE_TYPE) {
|
|
||||||
buildSteps()->appendStep(Android::Constants::ANDROID_BUILD_APK_ID);
|
|
||||||
const auto &bs = buildSteps()->steps().constLast();
|
|
||||||
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"ANDROID_NATIVE_API_LEVEL",
|
|
||||||
CMakeProjectManager::CMakeConfigItem::Type::STRING,
|
|
||||||
"Android native API level",
|
|
||||||
bs->data(Android::Constants::AndroidNdkPlatform).toString().toUtf8()});
|
|
||||||
auto ndkLocation = bs->data(Android::Constants::NdkLocation).value<FilePath>();
|
|
||||||
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"ANDROID_NDK",
|
|
||||||
CMakeProjectManager::CMakeConfigItem::Type::PATH,
|
|
||||||
"Android NDK PATH",
|
|
||||||
ndkLocation.toString().toUtf8()});
|
|
||||||
|
|
||||||
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"CMAKE_TOOLCHAIN_FILE",
|
|
||||||
CMakeProjectManager::CMakeConfigItem::Type::PATH,
|
|
||||||
"Android CMake toolchain file",
|
|
||||||
ndkLocation.pathAppended("build/cmake/android.toolchain.cmake").toString().toUtf8()});
|
|
||||||
|
|
||||||
auto androidAbis = bs->data(Android::Constants::AndroidABIs).toStringList();
|
|
||||||
QString preferredAbi;
|
|
||||||
if (androidAbis.contains("armeabi-v7a")) {
|
|
||||||
preferredAbi = "armeabi-v7a";
|
|
||||||
} else if (androidAbis.isEmpty() || androidAbis.contains("arm64-v8a")) {
|
|
||||||
preferredAbi = "arm64-v8a";
|
|
||||||
} else {
|
|
||||||
preferredAbi = androidAbis.first();
|
|
||||||
}
|
|
||||||
// FIXME: configmodel doesn't care about our androidAbis list...
|
|
||||||
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"ANDROID_ABI",
|
|
||||||
CMakeProjectManager::CMakeConfigItem::Type::STRING,
|
|
||||||
"Android ABI",
|
|
||||||
preferredAbi.toLatin1(),
|
|
||||||
androidAbis});
|
|
||||||
|
|
||||||
QtSupport::BaseQtVersion *qt = QtSupport::QtKitAspect::qtVersion(target()->kit());
|
|
||||||
if (qt->qtVersion() >= QtSupport::QtVersionNumber{5, 14, 0}) {
|
|
||||||
auto sdkLocation = bs->data(Android::Constants::SdkLocation).value<FilePath>();
|
|
||||||
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"ANDROID_SDK",
|
|
||||||
CMakeProjectManager::CMakeConfigItem::Type::PATH,
|
|
||||||
"Android SDK PATH",
|
|
||||||
sdkLocation.toString().toUtf8()});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"ANDROID_STL",
|
|
||||||
CMakeProjectManager::CMakeConfigItem::Type::STRING,
|
|
||||||
"Android STL",
|
|
||||||
"c++_shared"});
|
|
||||||
|
|
||||||
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"CMAKE_FIND_ROOT_PATH", "%{Qt:QT_INSTALL_PREFIX}"});
|
|
||||||
}
|
|
||||||
|
|
||||||
cleanSteps()->appendStep(Constants::CMAKE_BUILD_STEP_ID);
|
|
||||||
|
|
||||||
if (initialBuildDirectory().isEmpty()) {
|
|
||||||
auto project = target()->project();
|
|
||||||
setBuildDirectory(CMakeBuildConfiguration::shadowBuildDirectory(project->projectFilePath(),
|
|
||||||
target()->kit(),
|
|
||||||
initialDisplayName(),
|
|
||||||
initialBuildType()));
|
|
||||||
}
|
|
||||||
auto info = extraInfo().value<CMakeExtraBuildInfo>();
|
|
||||||
setConfigurationForCMake(info.configuration);
|
|
||||||
}
|
|
||||||
|
|
||||||
QString CMakeBuildConfiguration::disabledReason() const
|
QString CMakeBuildConfiguration::disabledReason() const
|
||||||
{
|
{
|
||||||
|
@@ -47,7 +47,7 @@ class CMakeBuildConfiguration : public ProjectExplorer::BuildConfiguration
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
friend class ProjectExplorer::BuildConfigurationFactory;
|
friend class ProjectExplorer::BuildConfigurationFactory;
|
||||||
CMakeBuildConfiguration(ProjectExplorer::Target *parent, Core::Id id);
|
CMakeBuildConfiguration(ProjectExplorer::Target *target, Core::Id id);
|
||||||
~CMakeBuildConfiguration() final;
|
~CMakeBuildConfiguration() final;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@@ -79,7 +79,6 @@ private:
|
|||||||
QVariantMap toMap() const override;
|
QVariantMap toMap() const override;
|
||||||
BuildType buildType() const override;
|
BuildType buildType() const override;
|
||||||
|
|
||||||
void initialize() override;
|
|
||||||
QString disabledReason() const override;
|
QString disabledReason() const override;
|
||||||
|
|
||||||
ProjectExplorer::NamedWidget *createConfigWidget() override;
|
ProjectExplorer::NamedWidget *createConfigWidget() override;
|
||||||
|
@@ -528,11 +528,15 @@ CompilationDatabaseEditorFactory::CompilationDatabaseEditorFactory()
|
|||||||
setCodeFoldingSupported(true);
|
setCodeFoldingSupported(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
CompilationDatabaseBuildConfiguration::CompilationDatabaseBuildConfiguration(
|
class CompilationDatabaseBuildConfiguration : public BuildConfiguration
|
||||||
ProjectExplorer::Target *target, Core::Id id)
|
|
||||||
: ProjectExplorer::BuildConfiguration(target, id)
|
|
||||||
{
|
{
|
||||||
}
|
public:
|
||||||
|
CompilationDatabaseBuildConfiguration(Target *target, Core::Id id)
|
||||||
|
: BuildConfiguration(target, id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
CompilationDatabaseBuildConfigurationFactory::CompilationDatabaseBuildConfigurationFactory()
|
CompilationDatabaseBuildConfigurationFactory::CompilationDatabaseBuildConfigurationFactory()
|
||||||
{
|
{
|
||||||
|
@@ -95,14 +95,6 @@ public:
|
|||||||
CompilationDatabaseEditorFactory();
|
CompilationDatabaseEditorFactory();
|
||||||
};
|
};
|
||||||
|
|
||||||
class CompilationDatabaseBuildConfiguration : public ProjectExplorer::BuildConfiguration
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
CompilationDatabaseBuildConfiguration(ProjectExplorer::Target *target, Core::Id id);
|
|
||||||
void initialize() final {}
|
|
||||||
};
|
|
||||||
|
|
||||||
class CompilationDatabaseBuildConfigurationFactory
|
class CompilationDatabaseBuildConfigurationFactory
|
||||||
: public ProjectExplorer::BuildConfigurationFactory
|
: public ProjectExplorer::BuildConfigurationFactory
|
||||||
{
|
{
|
||||||
|
@@ -55,13 +55,11 @@ GenericBuildConfiguration::GenericBuildConfiguration(Target *parent, Core::Id id
|
|||||||
setConfigWidgetDisplayName(tr("Generic Manager"));
|
setConfigWidgetDisplayName(tr("Generic Manager"));
|
||||||
setBuildDirectoryHistoryCompleter("Generic.BuildDir.History");
|
setBuildDirectoryHistoryCompleter("Generic.BuildDir.History");
|
||||||
|
|
||||||
updateCacheAndEmitEnvironmentChanged();
|
setInitializer([this] {
|
||||||
}
|
buildSteps()->appendStep(Constants::GENERIC_MS_ID);
|
||||||
|
cleanSteps()->appendStep(Constants::GENERIC_MS_ID);
|
||||||
void GenericBuildConfiguration::initialize()
|
updateCacheAndEmitEnvironmentChanged();
|
||||||
{
|
});
|
||||||
buildSteps()->appendStep(Constants::GENERIC_MS_ID);
|
|
||||||
cleanSteps()->appendStep(Constants::GENERIC_MS_ID);
|
|
||||||
|
|
||||||
updateCacheAndEmitEnvironmentChanged();
|
updateCacheAndEmitEnvironmentChanged();
|
||||||
}
|
}
|
||||||
|
@@ -27,8 +27,6 @@
|
|||||||
|
|
||||||
#include <projectexplorer/buildconfiguration.h>
|
#include <projectexplorer/buildconfiguration.h>
|
||||||
|
|
||||||
namespace Utils { class FilePath; }
|
|
||||||
|
|
||||||
namespace GenericProjectManager {
|
namespace GenericProjectManager {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
@@ -39,7 +37,6 @@ class GenericBuildConfiguration : public ProjectExplorer::BuildConfiguration
|
|||||||
friend class ProjectExplorer::BuildConfigurationFactory;
|
friend class ProjectExplorer::BuildConfigurationFactory;
|
||||||
GenericBuildConfiguration(ProjectExplorer::Target *parent, Core::Id id);
|
GenericBuildConfiguration(ProjectExplorer::Target *parent, Core::Id id);
|
||||||
|
|
||||||
void initialize() override;
|
|
||||||
void addToEnvironment(Utils::Environment &env) const final;
|
void addToEnvironment(Utils::Environment &env) const final;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -54,8 +54,23 @@ NimbleBuildConfiguration::NimbleBuildConfiguration(Target *target, Core::Id id)
|
|||||||
setConfigWidgetHasFrame(true);
|
setConfigWidgetHasFrame(true);
|
||||||
setBuildDirectorySettingsKey("Nim.NimbleBuildConfiguration.BuildDirectory");
|
setBuildDirectorySettingsKey("Nim.NimbleBuildConfiguration.BuildDirectory");
|
||||||
|
|
||||||
m_nimbleBuildSystem = dynamic_cast<NimbleBuildSystem *>(buildSystem());
|
setInitializer([this] {
|
||||||
QTC_ASSERT(m_nimbleBuildSystem, return);
|
|
||||||
|
m_buildType = initialBuildType();
|
||||||
|
|
||||||
|
setBuildDirectory(project()->projectDirectory());
|
||||||
|
|
||||||
|
// FIXME: This is the wrong place for this decision, as it depends on
|
||||||
|
// information that's typically only available after parsing which takes
|
||||||
|
// the build configuration that is initialized here into account.
|
||||||
|
|
||||||
|
// // Don't add a nimble build step when the package has no binaries (i.e a library package)
|
||||||
|
// m_nimbleBuildSystem = dynamic_cast<NimbleBuildSystem *>(buildSystem());
|
||||||
|
// if (!m_nimbleBuildSystem->metadata().bin.empty())
|
||||||
|
// {
|
||||||
|
buildSteps()->appendStep(new NimbleBuildStep(buildSteps()));
|
||||||
|
// }
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
BuildConfiguration::BuildType NimbleBuildConfiguration::buildType() const
|
BuildConfiguration::BuildType NimbleBuildConfiguration::buildType() const
|
||||||
@@ -63,23 +78,6 @@ BuildConfiguration::BuildType NimbleBuildConfiguration::buildType() const
|
|||||||
return m_buildType;
|
return m_buildType;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NimbleBuildConfiguration::initialize()
|
|
||||||
{
|
|
||||||
m_buildType = initialBuildType();
|
|
||||||
|
|
||||||
setBuildDirectory(project()->projectDirectory());
|
|
||||||
|
|
||||||
// FIXME: This is the wrong place for this decision, as it depends on
|
|
||||||
// information that's typically only available after parsing which takes
|
|
||||||
// the build configuration that is initialized here into account.
|
|
||||||
|
|
||||||
// // Don't add a nimble build step when the package has no binaries (i.e a library package)
|
|
||||||
// if (!m_nimbleBuildSystem->metadata().bin.empty())
|
|
||||||
// {
|
|
||||||
buildSteps()->appendStep(new NimbleBuildStep(buildSteps()));
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
bool NimbleBuildConfiguration::fromMap(const QVariantMap &map)
|
bool NimbleBuildConfiguration::fromMap(const QVariantMap &map)
|
||||||
{
|
{
|
||||||
m_buildType = static_cast<BuildType>(map[Constants::C_NIMBLEBUILDCONFIGURATION_BUILDTYPE].toInt());
|
m_buildType = static_cast<BuildType>(map[Constants::C_NIMBLEBUILDCONFIGURATION_BUILDTYPE].toInt());
|
||||||
|
@@ -30,8 +30,6 @@
|
|||||||
|
|
||||||
namespace Nim {
|
namespace Nim {
|
||||||
|
|
||||||
class NimbleBuildSystem;
|
|
||||||
|
|
||||||
class NimbleBuildConfiguration : public ProjectExplorer::BuildConfiguration
|
class NimbleBuildConfiguration : public ProjectExplorer::BuildConfiguration
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@@ -46,11 +44,7 @@ class NimbleBuildConfiguration : public ProjectExplorer::BuildConfiguration
|
|||||||
|
|
||||||
QVariantMap toMap() const override;
|
QVariantMap toMap() const override;
|
||||||
|
|
||||||
protected:
|
|
||||||
void initialize() override;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
NimbleBuildSystem *m_nimbleBuildSystem = nullptr;
|
|
||||||
BuildType m_buildType;
|
BuildType m_buildType;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -71,46 +71,47 @@ NimBuildConfiguration::NimBuildConfiguration(Target *target, Core::Id id)
|
|||||||
setConfigWidgetDisplayName(tr("General"));
|
setConfigWidgetDisplayName(tr("General"));
|
||||||
setConfigWidgetHasFrame(true);
|
setConfigWidgetHasFrame(true);
|
||||||
setBuildDirectorySettingsKey("Nim.NimBuildConfiguration.BuildDirectory");
|
setBuildDirectorySettingsKey("Nim.NimBuildConfiguration.BuildDirectory");
|
||||||
}
|
|
||||||
|
|
||||||
void NimBuildConfiguration::initialize()
|
|
||||||
{
|
|
||||||
// Create the build configuration and initialize it from build info
|
|
||||||
setBuildDirectory(defaultBuildDirectory(target()->kit(),
|
|
||||||
project()->projectFilePath(),
|
|
||||||
displayName(),
|
|
||||||
buildType()));
|
|
||||||
|
|
||||||
// Add nim compiler build step
|
setInitializer([this, target] {
|
||||||
{
|
// Create the build configuration and initialize it from build info
|
||||||
auto nimCompilerBuildStep = new NimCompilerBuildStep(buildSteps());
|
setBuildDirectory(defaultBuildDirectory(target->kit(),
|
||||||
NimCompilerBuildStep::DefaultBuildOptions defaultOption;
|
project()->projectFilePath(),
|
||||||
switch (initialBuildType()) {
|
displayName(),
|
||||||
case BuildConfiguration::Release:
|
buildType()));
|
||||||
defaultOption = NimCompilerBuildStep::DefaultBuildOptions::Release;
|
|
||||||
break;
|
// Add nim compiler build step
|
||||||
case BuildConfiguration::Debug:
|
{
|
||||||
defaultOption = NimCompilerBuildStep::DefaultBuildOptions::Debug;
|
auto nimCompilerBuildStep = new NimCompilerBuildStep(buildSteps());
|
||||||
break;
|
NimCompilerBuildStep::DefaultBuildOptions defaultOption;
|
||||||
default:
|
switch (initialBuildType()) {
|
||||||
defaultOption = NimCompilerBuildStep::DefaultBuildOptions::Empty;
|
case BuildConfiguration::Release:
|
||||||
break;
|
defaultOption = NimCompilerBuildStep::DefaultBuildOptions::Release;
|
||||||
|
break;
|
||||||
|
case BuildConfiguration::Debug:
|
||||||
|
defaultOption = NimCompilerBuildStep::DefaultBuildOptions::Debug;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
defaultOption = NimCompilerBuildStep::DefaultBuildOptions::Empty;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
nimCompilerBuildStep->setDefaultCompilerOptions(defaultOption);
|
||||||
|
|
||||||
|
const Utils::FilePathList nimFiles = project()->files([](const Node *n) {
|
||||||
|
return Project::AllFiles(n) && n->path().endsWith(".nim");
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!nimFiles.isEmpty())
|
||||||
|
nimCompilerBuildStep->setTargetNimFile(nimFiles.first());
|
||||||
|
buildSteps()->appendStep(nimCompilerBuildStep);
|
||||||
}
|
}
|
||||||
nimCompilerBuildStep->setDefaultCompilerOptions(defaultOption);
|
|
||||||
|
|
||||||
const Utils::FilePathList nimFiles = project()->files([](const Node *n) {
|
// Add clean step
|
||||||
return Project::AllFiles(n) && n->path().endsWith(".nim");
|
cleanSteps()->appendStep(Constants::C_NIMCOMPILERCLEANSTEP_ID);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!nimFiles.isEmpty())
|
|
||||||
nimCompilerBuildStep->setTargetNimFile(nimFiles.first());
|
|
||||||
buildSteps()->appendStep(nimCompilerBuildStep);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add clean step
|
|
||||||
cleanSteps()->appendStep(Constants::C_NIMCOMPILERCLEANSTEP_ID);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
FilePath NimBuildConfiguration::cacheDirectory() const
|
FilePath NimBuildConfiguration::cacheDirectory() const
|
||||||
{
|
{
|
||||||
return buildDirectory().pathAppended("nimcache");
|
return buildDirectory().pathAppended("nimcache");
|
||||||
|
@@ -39,8 +39,6 @@ class NimBuildConfiguration : public ProjectExplorer::BuildConfiguration
|
|||||||
friend class ProjectExplorer::BuildConfigurationFactory;
|
friend class ProjectExplorer::BuildConfigurationFactory;
|
||||||
NimBuildConfiguration(ProjectExplorer::Target *target, Core::Id id);
|
NimBuildConfiguration(ProjectExplorer::Target *target, Core::Id id);
|
||||||
|
|
||||||
void initialize() override;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Utils::FilePath cacheDirectory() const;
|
Utils::FilePath cacheDirectory() const;
|
||||||
Utils::FilePath outFilePath() const;
|
Utils::FilePath outFilePath() const;
|
||||||
|
@@ -84,6 +84,8 @@ public:
|
|||||||
QString m_configWidgetDisplayName;
|
QString m_configWidgetDisplayName;
|
||||||
bool m_configWidgetHasFrame = false;
|
bool m_configWidgetHasFrame = false;
|
||||||
|
|
||||||
|
std::function<void()> m_initializer;
|
||||||
|
|
||||||
// FIXME: Remove.
|
// FIXME: Remove.
|
||||||
BuildConfiguration::BuildType m_initialBuildType = BuildConfiguration::Unknown;
|
BuildConfiguration::BuildType m_initialBuildType = BuildConfiguration::Unknown;
|
||||||
Utils::FilePath m_initialBuildDirectory;
|
Utils::FilePath m_initialBuildDirectory;
|
||||||
@@ -181,6 +183,28 @@ void BuildConfiguration::addConfigWidgets(const std::function<void(NamedWidget *
|
|||||||
adder(subConfigWidget);
|
adder(subConfigWidget);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BuildConfiguration::doInitialize(const BuildInfo &info)
|
||||||
|
{
|
||||||
|
setDisplayName(info.displayName);
|
||||||
|
setDefaultDisplayName(info.displayName);
|
||||||
|
setBuildDirectory(info.buildDirectory);
|
||||||
|
|
||||||
|
d->m_initialBuildType = info.buildType;
|
||||||
|
d->m_initialDisplayName = info.displayName;
|
||||||
|
d->m_initialBuildDirectory = info.buildDirectory;
|
||||||
|
d->m_extraInfo = info.extraInfo;
|
||||||
|
|
||||||
|
acquaintAspects();
|
||||||
|
|
||||||
|
if (d->m_initializer)
|
||||||
|
d->m_initializer();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BuildConfiguration::setInitializer(const std::function<void ()> &initializer)
|
||||||
|
{
|
||||||
|
d->m_initializer = initializer;
|
||||||
|
}
|
||||||
|
|
||||||
NamedWidget *BuildConfiguration::createConfigWidget()
|
NamedWidget *BuildConfiguration::createConfigWidget()
|
||||||
{
|
{
|
||||||
NamedWidget *named = new NamedWidget(d->m_configWidgetDisplayName);
|
NamedWidget *named = new NamedWidget(d->m_configWidgetDisplayName);
|
||||||
@@ -405,7 +429,7 @@ bool BuildConfiguration::regenerateBuildFiles(Node *node)
|
|||||||
|
|
||||||
void BuildConfiguration::restrictNextBuild(const RunConfiguration *rc)
|
void BuildConfiguration::restrictNextBuild(const RunConfiguration *rc)
|
||||||
{
|
{
|
||||||
Q_UNUSED(rc);
|
Q_UNUSED(rc)
|
||||||
}
|
}
|
||||||
|
|
||||||
BuildConfiguration::BuildType BuildConfiguration::buildType() const
|
BuildConfiguration::BuildType BuildConfiguration::buildType() const
|
||||||
@@ -568,21 +592,10 @@ BuildConfiguration *BuildConfigurationFactory::create(Target *parent, const Buil
|
|||||||
if (!canHandle(parent))
|
if (!canHandle(parent))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
QTC_ASSERT(m_creator, return nullptr);
|
QTC_ASSERT(m_creator, return nullptr);
|
||||||
|
|
||||||
BuildConfiguration *bc = m_creator(parent);
|
BuildConfiguration *bc = m_creator(parent);
|
||||||
if (!bc)
|
if (bc)
|
||||||
return nullptr;
|
bc->doInitialize(info);
|
||||||
|
|
||||||
bc->setDisplayName(info.displayName);
|
|
||||||
bc->setDefaultDisplayName(info.displayName);
|
|
||||||
bc->setBuildDirectory(info.buildDirectory);
|
|
||||||
|
|
||||||
bc->d->m_initialBuildType = info.buildType;
|
|
||||||
bc->d->m_initialDisplayName = info.displayName;
|
|
||||||
bc->d->m_initialBuildDirectory = info.buildDirectory;
|
|
||||||
bc->d->m_extraInfo = info.extraInfo;
|
|
||||||
|
|
||||||
bc->acquaintAspects();
|
|
||||||
bc->initialize();
|
|
||||||
|
|
||||||
return bc;
|
return bc;
|
||||||
}
|
}
|
||||||
|
@@ -55,7 +55,7 @@ protected:
|
|||||||
explicit BuildConfiguration(Target *target, Core::Id id);
|
explicit BuildConfiguration(Target *target, Core::Id id);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
~BuildConfiguration();
|
~BuildConfiguration() override;
|
||||||
|
|
||||||
Utils::FilePath buildDirectory() const;
|
Utils::FilePath buildDirectory() const;
|
||||||
Utils::FilePath rawBuildDirectory() const;
|
Utils::FilePath rawBuildDirectory() const;
|
||||||
@@ -118,6 +118,8 @@ public:
|
|||||||
|
|
||||||
void addConfigWidgets(const std::function<void (NamedWidget *)> &adder);
|
void addConfigWidgets(const std::function<void (NamedWidget *)> &adder);
|
||||||
|
|
||||||
|
void doInitialize(const BuildInfo &info);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void environmentChanged();
|
void environmentChanged();
|
||||||
void buildDirectoryChanged();
|
void buildDirectoryChanged();
|
||||||
@@ -125,7 +127,7 @@ signals:
|
|||||||
void buildTypeChanged();
|
void buildTypeChanged();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void initialize() = 0;
|
void setInitializer(const std::function<void()> &initializer);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void emitBuildDirectoryChanged();
|
void emitBuildDirectoryChanged();
|
||||||
|
@@ -80,6 +80,47 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Core::Id id)
|
|||||||
{
|
{
|
||||||
setConfigWidgetHasFrame(true);
|
setConfigWidgetHasFrame(true);
|
||||||
|
|
||||||
|
setInitializer([this, target] {
|
||||||
|
const Kit *kit = target->kit();
|
||||||
|
QVariantMap configData = extraInfo().value<QVariantMap>();
|
||||||
|
configData.insert(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY),
|
||||||
|
(initialBuildType() == BuildConfiguration::Debug)
|
||||||
|
? QLatin1String(Constants::QBS_VARIANT_DEBUG)
|
||||||
|
: QLatin1String(Constants::QBS_VARIANT_RELEASE));
|
||||||
|
|
||||||
|
Utils::FilePath buildDir = initialBuildDirectory();
|
||||||
|
if (buildDir.isEmpty())
|
||||||
|
buildDir = defaultBuildDirectory(target->project()->projectFilePath(),
|
||||||
|
kit, initialDisplayName(),
|
||||||
|
initialBuildType());
|
||||||
|
setBuildDirectory(buildDir);
|
||||||
|
|
||||||
|
// Add the build configuration.
|
||||||
|
QVariantMap bd = configData;
|
||||||
|
QString configName = bd.take("configName").toString();
|
||||||
|
if (configName.isEmpty()) {
|
||||||
|
configName = "qtc_" + kit->fileSystemFriendlyName() + '_'
|
||||||
|
+ Utils::FileUtils::fileSystemFriendlyName(initialDisplayName());
|
||||||
|
}
|
||||||
|
|
||||||
|
const QString kitName = kit->displayName();
|
||||||
|
const QByteArray kitHash = QCryptographicHash::hash(kitName.toUtf8(), QCryptographicHash::Sha1);
|
||||||
|
|
||||||
|
const QString uniqueConfigName = configName
|
||||||
|
+ '_' + kit->fileSystemFriendlyName().left(8)
|
||||||
|
+ '_' + kitHash.toHex().left(16);
|
||||||
|
|
||||||
|
m_configurationName->setValue(uniqueConfigName);
|
||||||
|
|
||||||
|
auto bs = new QbsBuildStep(buildSteps());
|
||||||
|
bs->setQbsConfiguration(bd);
|
||||||
|
buildSteps()->appendStep(bs);
|
||||||
|
|
||||||
|
cleanSteps()->appendStep(Constants::QBS_CLEANSTEP_ID);
|
||||||
|
|
||||||
|
emit qbsConfigurationChanged();
|
||||||
|
});
|
||||||
|
|
||||||
m_configurationName = addAspect<BaseStringAspect>();
|
m_configurationName = addAspect<BaseStringAspect>();
|
||||||
m_configurationName->setLabelText(tr("Configuration name:"));
|
m_configurationName->setLabelText(tr("Configuration name:"));
|
||||||
m_configurationName->setSettingsKey("Qbs.configName");
|
m_configurationName->setSettingsKey("Qbs.configName");
|
||||||
@@ -124,48 +165,6 @@ BuildSystem *QbsBuildConfiguration::buildSystem() const
|
|||||||
return m_buildSystem;
|
return m_buildSystem;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QbsBuildConfiguration::initialize()
|
|
||||||
{
|
|
||||||
QVariantMap configData = extraInfo().value<QVariantMap>();
|
|
||||||
configData.insert(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY),
|
|
||||||
(initialBuildType() == BuildConfiguration::Debug)
|
|
||||||
? QLatin1String(Constants::QBS_VARIANT_DEBUG)
|
|
||||||
: QLatin1String(Constants::QBS_VARIANT_RELEASE));
|
|
||||||
|
|
||||||
Utils::FilePath buildDir = initialBuildDirectory();
|
|
||||||
if (buildDir.isEmpty())
|
|
||||||
buildDir = defaultBuildDirectory(target()->project()->projectFilePath(),
|
|
||||||
target()->kit(), initialDisplayName(),
|
|
||||||
initialBuildType());
|
|
||||||
setBuildDirectory(buildDir);
|
|
||||||
|
|
||||||
// Add the build configuration.
|
|
||||||
QVariantMap bd = configData;
|
|
||||||
QString configName = bd.take("configName").toString();
|
|
||||||
if (configName.isEmpty()) {
|
|
||||||
configName = "qtc_" + target()->kit()->fileSystemFriendlyName() + '_'
|
|
||||||
+ Utils::FileUtils::fileSystemFriendlyName(initialDisplayName());
|
|
||||||
}
|
|
||||||
|
|
||||||
const Kit *kit = target()->kit();
|
|
||||||
const QString kitName = kit->displayName();
|
|
||||||
const QByteArray kitHash = QCryptographicHash::hash(kitName.toUtf8(), QCryptographicHash::Sha1);
|
|
||||||
|
|
||||||
const QString uniqueConfigName = configName
|
|
||||||
+ '_' + kit->fileSystemFriendlyName().left(8)
|
|
||||||
+ '_' + kitHash.toHex().left(16);
|
|
||||||
|
|
||||||
m_configurationName->setValue(uniqueConfigName);
|
|
||||||
|
|
||||||
auto bs = new QbsBuildStep(buildSteps());
|
|
||||||
bs->setQbsConfiguration(bd);
|
|
||||||
buildSteps()->appendStep(bs);
|
|
||||||
|
|
||||||
cleanSteps()->appendStep(Constants::QBS_CLEANSTEP_ID);
|
|
||||||
|
|
||||||
emit qbsConfigurationChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
void QbsBuildConfiguration::triggerReparseIfActive()
|
void QbsBuildConfiguration::triggerReparseIfActive()
|
||||||
{
|
{
|
||||||
if (isActive())
|
if (isActive())
|
||||||
|
@@ -57,7 +57,6 @@ class QbsBuildConfiguration : public ProjectExplorer::BuildConfiguration
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
ProjectExplorer::BuildSystem *buildSystem() const final;
|
ProjectExplorer::BuildSystem *buildSystem() const final;
|
||||||
void initialize() final;
|
|
||||||
|
|
||||||
QbsBuildStep *qbsStep() const;
|
QbsBuildStep *qbsStep() const;
|
||||||
QVariantMap qbsConfiguration() const;
|
QVariantMap qbsConfiguration() const;
|
||||||
|
@@ -109,6 +109,50 @@ QmakeBuildConfiguration::QmakeBuildConfiguration(Target *target, Core::Id id)
|
|||||||
setConfigWidgetHasFrame(true);
|
setConfigWidgetHasFrame(true);
|
||||||
m_buildSystem = new QmakeBuildSystem(this);
|
m_buildSystem = new QmakeBuildSystem(this);
|
||||||
|
|
||||||
|
setInitializer([this, target] {
|
||||||
|
auto qmakeStep = new QMakeStep(buildSteps());
|
||||||
|
buildSteps()->appendStep(qmakeStep);
|
||||||
|
buildSteps()->appendStep(Constants::MAKESTEP_BS_ID);
|
||||||
|
|
||||||
|
cleanSteps()->appendStep(Constants::MAKESTEP_BS_ID);
|
||||||
|
|
||||||
|
const QmakeExtraBuildInfo qmakeExtra = extraInfo().value<QmakeExtraBuildInfo>();
|
||||||
|
BaseQtVersion *version = QtKitAspect::qtVersion(target->kit());
|
||||||
|
|
||||||
|
BaseQtVersion::QmakeBuildConfigs config = version->defaultBuildConfig();
|
||||||
|
if (initialBuildType() == BuildConfiguration::Debug)
|
||||||
|
config |= BaseQtVersion::DebugBuild;
|
||||||
|
else
|
||||||
|
config &= ~BaseQtVersion::DebugBuild;
|
||||||
|
|
||||||
|
QString additionalArguments = qmakeExtra.additionalArguments;
|
||||||
|
if (!additionalArguments.isEmpty())
|
||||||
|
qmakeStep->setUserArguments(additionalArguments);
|
||||||
|
|
||||||
|
aspect<SeparateDebugInfoAspect>()->setSetting(qmakeExtra.config.separateDebugInfo);
|
||||||
|
aspect<QmlDebuggingAspect>()->setSetting(qmakeExtra.config.linkQmlDebuggingQQ2);
|
||||||
|
aspect<QtQuickCompilerAspect>()->setSetting(qmakeExtra.config.useQtQuickCompiler);
|
||||||
|
|
||||||
|
setQMakeBuildConfiguration(config);
|
||||||
|
|
||||||
|
FilePath directory = initialBuildDirectory();
|
||||||
|
if (directory.isEmpty()) {
|
||||||
|
directory = shadowBuildDirectory(target->project()->projectFilePath(),
|
||||||
|
target->kit(), initialDisplayName(),
|
||||||
|
initialBuildType());
|
||||||
|
}
|
||||||
|
|
||||||
|
setBuildDirectory(directory);
|
||||||
|
|
||||||
|
if (DeviceTypeKitAspect::deviceTypeId(target->kit())
|
||||||
|
== Android::Constants::ANDROID_DEVICE_TYPE) {
|
||||||
|
buildSteps()->appendStep(Android::Constants::ANDROID_PACKAGE_INSTALLATION_STEP_ID);
|
||||||
|
buildSteps()->appendStep(Android::Constants::ANDROID_BUILD_APK_ID);
|
||||||
|
}
|
||||||
|
|
||||||
|
updateCacheAndEmitEnvironmentChanged();
|
||||||
|
});
|
||||||
|
|
||||||
connect(target, &Target::kitChanged,
|
connect(target, &Target::kitChanged,
|
||||||
this, &QmakeBuildConfiguration::kitChanged);
|
this, &QmakeBuildConfiguration::kitChanged);
|
||||||
MacroExpander *expander = macroExpander();
|
MacroExpander *expander = macroExpander();
|
||||||
@@ -153,51 +197,6 @@ QmakeBuildConfiguration::QmakeBuildConfiguration(Target *target, Core::Id id)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmakeBuildConfiguration::initialize()
|
|
||||||
{
|
|
||||||
auto qmakeStep = new QMakeStep(buildSteps());
|
|
||||||
buildSteps()->appendStep(qmakeStep);
|
|
||||||
buildSteps()->appendStep(Constants::MAKESTEP_BS_ID);
|
|
||||||
|
|
||||||
cleanSteps()->appendStep(Constants::MAKESTEP_BS_ID);
|
|
||||||
|
|
||||||
const QmakeExtraBuildInfo qmakeExtra = extraInfo().value<QmakeExtraBuildInfo>();
|
|
||||||
BaseQtVersion *version = QtKitAspect::qtVersion(target()->kit());
|
|
||||||
|
|
||||||
BaseQtVersion::QmakeBuildConfigs config = version->defaultBuildConfig();
|
|
||||||
if (initialBuildType() == BuildConfiguration::Debug)
|
|
||||||
config |= BaseQtVersion::DebugBuild;
|
|
||||||
else
|
|
||||||
config &= ~BaseQtVersion::DebugBuild;
|
|
||||||
|
|
||||||
QString additionalArguments = qmakeExtra.additionalArguments;
|
|
||||||
if (!additionalArguments.isEmpty())
|
|
||||||
qmakeStep->setUserArguments(additionalArguments);
|
|
||||||
|
|
||||||
aspect<SeparateDebugInfoAspect>()->setSetting(qmakeExtra.config.separateDebugInfo);
|
|
||||||
aspect<QmlDebuggingAspect>()->setSetting(qmakeExtra.config.linkQmlDebuggingQQ2);
|
|
||||||
aspect<QtQuickCompilerAspect>()->setSetting(qmakeExtra.config.useQtQuickCompiler);
|
|
||||||
|
|
||||||
setQMakeBuildConfiguration(config);
|
|
||||||
|
|
||||||
FilePath directory = initialBuildDirectory();
|
|
||||||
if (directory.isEmpty()) {
|
|
||||||
directory = shadowBuildDirectory(target()->project()->projectFilePath(),
|
|
||||||
target()->kit(), initialDisplayName(),
|
|
||||||
initialBuildType());
|
|
||||||
}
|
|
||||||
|
|
||||||
setBuildDirectory(directory);
|
|
||||||
|
|
||||||
if (DeviceTypeKitAspect::deviceTypeId(target()->kit())
|
|
||||||
== Android::Constants::ANDROID_DEVICE_TYPE) {
|
|
||||||
buildSteps()->appendStep(Android::Constants::ANDROID_PACKAGE_INSTALLATION_STEP_ID);
|
|
||||||
buildSteps()->appendStep(Android::Constants::ANDROID_BUILD_APK_ID);
|
|
||||||
}
|
|
||||||
|
|
||||||
updateCacheAndEmitEnvironmentChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
QmakeBuildConfiguration::~QmakeBuildConfiguration()
|
QmakeBuildConfiguration::~QmakeBuildConfiguration()
|
||||||
{
|
{
|
||||||
delete m_buildSystem;
|
delete m_buildSystem;
|
||||||
|
@@ -53,8 +53,6 @@ public:
|
|||||||
|
|
||||||
ProjectExplorer::BuildSystem *buildSystem() const final;
|
ProjectExplorer::BuildSystem *buildSystem() const final;
|
||||||
|
|
||||||
void initialize() override;
|
|
||||||
|
|
||||||
void setSubNodeBuild(QmakeProFileNode *node);
|
void setSubNodeBuild(QmakeProFileNode *node);
|
||||||
QmakeProFileNode *subNodeBuild() const;
|
QmakeProFileNode *subNodeBuild() const;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user