diff options
author | Eike Ziller <eike.ziller@qt.io> | 2022-06-15 14:40:23 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2022-06-17 07:31:01 +0000 |
commit | 65e043961e7267fbe4b0d897ee9922801c53035e (patch) | |
tree | 33da2a6e62abaac4fe4c252000b8d4f2e00692f9 | |
parent | addcfa6dc7f437ccbe098b9ad85fd9e1811a862e (diff) | |
download | qt-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>
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(); |