aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/nim
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2019-12-09 12:59:38 +0100
committerhjk <hjk@qt.io>2019-12-09 14:12:45 +0000
commit041a86c8c7d8a7e563655c5ae4dae08752ceaad8 (patch)
treef1434adf884c101bc6741ab63c3565b56346a1e6 /src/plugins/nim
parentb82add7813384c19879044b44796db1f8f067ad3 (diff)
ProjectExplorer: Use function object for special build config init
Change-Id: I5da0f28ee1a64f8d9a3145f059019be702bee463 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/nim')
-rw-r--r--src/plugins/nim/project/nimblebuildconfiguration.cpp36
-rw-r--r--src/plugins/nim/project/nimblebuildconfiguration.h6
-rw-r--r--src/plugins/nim/project/nimbuildconfiguration.cpp71
-rw-r--r--src/plugins/nim/project/nimbuildconfiguration.h2
4 files changed, 53 insertions, 62 deletions
diff --git a/src/plugins/nim/project/nimblebuildconfiguration.cpp b/src/plugins/nim/project/nimblebuildconfiguration.cpp
index 873b88de66..3703cb6442 100644
--- a/src/plugins/nim/project/nimblebuildconfiguration.cpp
+++ b/src/plugins/nim/project/nimblebuildconfiguration.cpp
@@ -54,30 +54,28 @@ NimbleBuildConfiguration::NimbleBuildConfiguration(Target *target, Core::Id id)
setConfigWidgetHasFrame(true);
setBuildDirectorySettingsKey("Nim.NimbleBuildConfiguration.BuildDirectory");
- m_nimbleBuildSystem = dynamic_cast<NimbleBuildSystem *>(buildSystem());
- QTC_ASSERT(m_nimbleBuildSystem, return);
-}
+ setInitializer([this] {
-BuildConfiguration::BuildType NimbleBuildConfiguration::buildType() const
-{
- return m_buildType;
-}
-
-void NimbleBuildConfiguration::initialize()
-{
- m_buildType = initialBuildType();
+ m_buildType = initialBuildType();
- setBuildDirectory(project()->projectDirectory());
+ 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.
+ // 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())
-// {
+ // // 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
+{
+ return m_buildType;
}
bool NimbleBuildConfiguration::fromMap(const QVariantMap &map)
diff --git a/src/plugins/nim/project/nimblebuildconfiguration.h b/src/plugins/nim/project/nimblebuildconfiguration.h
index f7e7dc4dc7..8990842615 100644
--- a/src/plugins/nim/project/nimblebuildconfiguration.h
+++ b/src/plugins/nim/project/nimblebuildconfiguration.h
@@ -30,8 +30,6 @@
namespace Nim {
-class NimbleBuildSystem;
-
class NimbleBuildConfiguration : public ProjectExplorer::BuildConfiguration
{
Q_OBJECT
@@ -46,11 +44,7 @@ class NimbleBuildConfiguration : public ProjectExplorer::BuildConfiguration
QVariantMap toMap() const override;
-protected:
- void initialize() override;
-
private:
- NimbleBuildSystem *m_nimbleBuildSystem = nullptr;
BuildType m_buildType;
};
diff --git a/src/plugins/nim/project/nimbuildconfiguration.cpp b/src/plugins/nim/project/nimbuildconfiguration.cpp
index 42f0177ceb..3b429cb550 100644
--- a/src/plugins/nim/project/nimbuildconfiguration.cpp
+++ b/src/plugins/nim/project/nimbuildconfiguration.cpp
@@ -71,46 +71,47 @@ NimBuildConfiguration::NimBuildConfiguration(Target *target, Core::Id id)
setConfigWidgetDisplayName(tr("General"));
setConfigWidgetHasFrame(true);
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
- {
- auto nimCompilerBuildStep = new NimCompilerBuildStep(buildSteps());
- NimCompilerBuildStep::DefaultBuildOptions defaultOption;
- switch (initialBuildType()) {
- case BuildConfiguration::Release:
- 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);
- }
+ setInitializer([this, target] {
+ // Create the build configuration and initialize it from build info
+ setBuildDirectory(defaultBuildDirectory(target->kit(),
+ project()->projectFilePath(),
+ displayName(),
+ buildType()));
+
+ // Add nim compiler build step
+ {
+ auto nimCompilerBuildStep = new NimCompilerBuildStep(buildSteps());
+ NimCompilerBuildStep::DefaultBuildOptions defaultOption;
+ switch (initialBuildType()) {
+ case BuildConfiguration::Release:
+ 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);
+ }
- // Add clean step
- cleanSteps()->appendStep(Constants::C_NIMCOMPILERCLEANSTEP_ID);
+ // Add clean step
+ cleanSteps()->appendStep(Constants::C_NIMCOMPILERCLEANSTEP_ID);
+ });
}
+
FilePath NimBuildConfiguration::cacheDirectory() const
{
return buildDirectory().pathAppended("nimcache");
diff --git a/src/plugins/nim/project/nimbuildconfiguration.h b/src/plugins/nim/project/nimbuildconfiguration.h
index d5c4a293e4..a5c7cd23f7 100644
--- a/src/plugins/nim/project/nimbuildconfiguration.h
+++ b/src/plugins/nim/project/nimbuildconfiguration.h
@@ -39,8 +39,6 @@ class NimBuildConfiguration : public ProjectExplorer::BuildConfiguration
friend class ProjectExplorer::BuildConfigurationFactory;
NimBuildConfiguration(ProjectExplorer::Target *target, Core::Id id);
- void initialize() override;
-
public:
Utils::FilePath cacheDirectory() const;
Utils::FilePath outFilePath() const;