summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2022-06-15 14:40:23 +0200
committerEike Ziller <eike.ziller@qt.io>2022-06-17 07:31:01 +0000
commit65e043961e7267fbe4b0d897ee9922801c53035e (patch)
tree33da2a6e62abaac4fe4c252000b8d4f2e00692f9
parentaddcfa6dc7f437ccbe098b9ad85fd9e1811a862e (diff)
downloadqt-creator-65e043961e7267fbe4b0d897ee9922801c53035e.tar.gz
CMake: Fix missing path to ninja for ExternalProject_Add
ExternalProject_Add runs CMake not during the CMake run of the toplevel project, but instead it runs CMake for the external project during the build step. And while ExternalProject passes the CMAKE_COMMAND on to the external project, it does not do so for the CMAKE_MAKE_PROGRAM. Make sure that the make program is also found when configuring the external project during the build step, by adding the path to ninja to the build environment, instead of just the CMake process. Fixes: QTCREATORBUG-27495 Change-Id: I672ec04881387a7411836ab94655176b7a5fb681 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Cristian Adam <cristian.adam@qt.io>
-rw-r--r--src/plugins/cmakeprojectmanager/builddirparameters.cpp6
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp9
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h2
3 files changed, 11 insertions, 6 deletions
diff --git a/src/plugins/cmakeprojectmanager/builddirparameters.cpp b/src/plugins/cmakeprojectmanager/builddirparameters.cpp
index 5595182db6..939920e4b8 100644
--- a/src/plugins/cmakeprojectmanager/builddirparameters.cpp
+++ b/src/plugins/cmakeprojectmanager/builddirparameters.cpp
@@ -89,12 +89,6 @@ BuildDirParameters::BuildDirParameters(CMakeBuildSystem *buildSystem)
if (Utils::HostOsInfo::isAnyUnixHost())
environment.set("ICECC", "no");
- CMakeSpecificSettings *settings = CMakeProjectPlugin::projectTypeSpecificSettings();
- if (!settings->ninjaPath.filePath().isEmpty()) {
- const Utils::FilePath ninja = settings->ninjaPath.filePath();
- environment.appendOrSetPath(ninja.isFile() ? ninja.parentDir() : ninja);
- }
-
cmakeToolId = CMakeKitAspect::cmakeToolId(k);
}
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
index 66fa741c10..80b0f67e2c 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
@@ -1714,6 +1714,15 @@ FilePath CMakeBuildConfiguration::sourceDirectory() const
return aspect<SourceDirectoryAspect>()->filePath();
}
+void CMakeBuildConfiguration::addToEnvironment(Utils::Environment &env) const
+{
+ CMakeSpecificSettings *settings = CMakeProjectPlugin::projectTypeSpecificSettings();
+ if (!settings->ninjaPath.filePath().isEmpty()) {
+ const Utils::FilePath ninja = settings->ninjaPath.filePath();
+ env.appendOrSetPath(ninja.isFile() ? ninja.parentDir() : ninja);
+ }
+}
+
QString CMakeBuildSystem::cmakeBuildType() const
{
auto setBuildTypeFromConfig = [this](const CMakeConfig &config) {
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h
index bba266ca36..7d279b1bba 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h
+++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h
@@ -64,6 +64,8 @@ public:
void setSourceDirectory(const Utils::FilePath& path);
Utils::FilePath sourceDirectory() const;
+ void addToEnvironment(Utils::Environment &env) const override;
+
signals:
void signingFlagsChanged();