diff options
author | Cristian Adam <cristian.adam@qt.io> | 2022-10-24 12:48:49 +0200 |
---|---|---|
committer | Cristian Adam <cristian.adam@qt.io> | 2022-10-25 20:56:24 +0000 |
commit | 4fdbfe164131f16af00a1082cbf45273d074c8a2 (patch) | |
tree | 35f928189fbdeb56de31ccf2890fc99d215a7109 | |
parent | fb94873765f2db623d83f9fd660d7f6fa479ed5d (diff) |
CMakePM: Proper handling of relative toolchain files in CMakePresets
Previously it was only tested with absolute paths.
Change-Id: I3871da60f3f1b17ae4d2d4cfb69d1be60da1435b
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
-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 3ac9651238..74e5279ba3 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 1b16383064..90e2df5836 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 0000000000..ae5b6fc928 --- /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) |