From 449f3b94f0cacfc62aeb7feb4bac644860d8b0f6 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Sat, 29 Mar 2025 09:17:49 +0100 Subject: [PATCH] CMakePM: Use same detection mechanism for ninja as done for cmake Qt Creator looks into 3rd party package managers when doing the CMake autodetection on macOS (homebrew, macports etc.). The CMake installed from a 3rd party package would find ninja by itself, so we need to take this into consideration. Fixes: QTCREATORBUG-32331 Change-Id: I4e2a09b913c5295e9afe9f6c0ee9321f1d1c84c6 Reviewed-by: hjk --- src/plugins/cmakeprojectmanager/cmakekitaspect.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakekitaspect.cpp b/src/plugins/cmakeprojectmanager/cmakekitaspect.cpp index bf7e10c980e..b6343d49053 100644 --- a/src/plugins/cmakeprojectmanager/cmakekitaspect.cpp +++ b/src/plugins/cmakeprojectmanager/cmakekitaspect.cpp @@ -708,8 +708,12 @@ bool CMakeGeneratorKitAspectFactory::isNinjaPresent(const Kit *k, const CMakeToo return true; if (Internal::settings(nullptr).ninjaPath().isEmpty()) { - auto findNinja = [](const Environment &env) -> bool { - return !env.searchInPath("ninja").isEmpty(); + FilePaths extraDirs; + if (tool->filePath().osType() == OsTypeMac) + extraDirs << tool->filePath().parentDir(); + + auto findNinja = [extraDirs](const Environment &env) -> bool { + return !env.searchInPath("ninja", extraDirs).isEmpty(); }; if (!findNinja(tool->filePath().deviceEnvironment())) return findNinja(k->buildEnvironment());