From 65e043961e7267fbe4b0d897ee9922801c53035e Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 15 Jun 2022 14:40:23 +0200 Subject: 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 Reviewed-by: Reviewed-by: Cristian Adam --- src/plugins/cmakeprojectmanager/builddirparameters.cpp | 6 ------ src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp | 9 +++++++++ src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h | 2 ++ 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()->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(); -- cgit v1.2.1