diff options
-rw-r--r-- | src/plugins/cmakeprojectmanager/presetsmacros.cpp | 8 | ||||
-rw-r--r-- | tests/manual/cmakepresets/CMakePresets.json | 5 | ||||
-rw-r--r-- | tests/manual/cmakepresets/msvc-toolchain.cmake | 1 |
3 files changed, 9 insertions, 5 deletions
diff --git a/src/plugins/cmakeprojectmanager/presetsmacros.cpp b/src/plugins/cmakeprojectmanager/presetsmacros.cpp index 3ac96512388..74e5279ba3b 100644 --- a/src/plugins/cmakeprojectmanager/presetsmacros.cpp +++ b/src/plugins/cmakeprojectmanager/presetsmacros.cpp @@ -220,7 +220,7 @@ void updateToolchainFile( Utils::FilePath toolchainFile = Utils::FilePath::fromString(toolchainFileName); if (toolchainFile.isRelativePath()) { for (const auto &path : {sourceDirectory, buildDirectory}) { - Utils::FilePath probePath = toolchainFile.resolvePath(path); + Utils::FilePath probePath = path.resolvePath(toolchainFile); if (probePath.exists() && probePath != path) { toolchainFile = probePath; break; @@ -231,6 +231,8 @@ void updateToolchainFile( if (!toolchainFile.exists()) return; + const QString toolchainFileString = toolchainFile.cleanPath().toString(); + // toolchainFile takes precedence to CMAKE_TOOLCHAIN_FILE CMakeConfig cache = configurePreset.cacheVariables ? configurePreset.cacheVariables.value() : CMakeConfig(); @@ -239,11 +241,11 @@ void updateToolchainFile( return item.key == "CMAKE_TOOLCHAIN_FILE"; }); if (it != cache.end()) - it->value = toolchainFile.toString().toUtf8(); + it->value = toolchainFileString.toUtf8(); else cache << CMakeConfigItem("CMAKE_TOOLCHAIN_FILE", CMakeConfigItem::FILEPATH, - toolchainFile.toString().toUtf8()); + toolchainFileString.toUtf8()); configurePreset.cacheVariables = cache; } diff --git a/tests/manual/cmakepresets/CMakePresets.json b/tests/manual/cmakepresets/CMakePresets.json index 1b163830640..90e2df58369 100644 --- a/tests/manual/cmakepresets/CMakePresets.json +++ b/tests/manual/cmakepresets/CMakePresets.json @@ -45,7 +45,7 @@ "architecture" : { "value": "x64" }, - "toolchainFile" : "c:/Qt/6.3.2/msvc2019_64/lib/cmake/Qt6/qt.toolchain.cmake", + "toolchainFile" : "../cmakepresets/msvc-toolchain.cmake", "condition" : { "type": "not", "condition": { @@ -55,7 +55,8 @@ } }, "environment" : { - "HOST_SYSTEM_NAME": "Windows" + "HOST_SYSTEM_NAME": "Windows", + "QT_VERSION": "6.3.2" } }, { diff --git a/tests/manual/cmakepresets/msvc-toolchain.cmake b/tests/manual/cmakepresets/msvc-toolchain.cmake new file mode 100644 index 00000000000..ae5b6fc9283 --- /dev/null +++ b/tests/manual/cmakepresets/msvc-toolchain.cmake @@ -0,0 +1 @@ +include($ENV{SYSTEMDRIVE}/Qt/$ENV{QT_VERSION}/msvc2019_64/lib/cmake/Qt6/qt.toolchain.cmake) |