From 1de60ddeaff6e7584be2e67e20ab3e5fbe2d75ba Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 11 Mar 2022 13:13:24 +0100 Subject: [PATCH] CMake: Don't be too eager to throw out SDK-registered cmakes Change-Id: I6a35e7599b61068deaf34aeb86ba53bc4120c47c Reviewed-by: Cristian Adam --- .../cmakeprojectmanager/cmaketoolsettingsaccessor.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.cpp b/src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.cpp index 0629273d968..093e5f24ac7 100644 --- a/src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.cpp +++ b/src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.cpp @@ -128,7 +128,12 @@ mergeTools(std::vector> &sdkTools, std::unique_ptr userTool = std::move(userTools[0]); userTools.erase(std::begin(userTools)); - int userToolIndex = Utils::indexOf(result, Utils::equal(&CMakeTool::id, userTool->id())); + int userToolIndex = Utils::indexOf(result, [&userTool](const std::unique_ptr &tool) { + // Id should be sufficient, but we have older "mis-registered" docker based items. + // Make sure that these don't override better new values from the sdk by + // also checking the actual executable. + return userTool->id() == tool->id() && userTool->cmakeExecutable() == tool->cmakeExecutable(); + }); if (userToolIndex >= 0) { // Replace the sdk tool with the user tool, so any user changes do not get lost result[userToolIndex] = std::move(userTool);