1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-06-11 00:23:40 +08:00

CMakeGUI: Sanitize source and build dirs the same as command line

This makes a difference when projects compare things like
CMAKE_SOURCE_DIR with CMAKE_CURRENT_SOURCE_DIR and the source
directory has a trailing slash in the GUI. The command line cmake invocation
cleans the paths at the beginning, so such comparisons return true. But the
GUI currently passes the paths unmodified, so such comparisons return false.
Change the logic to sanitize the paths used through the GUI in the same way
that the command line invocation does.

Fixes: #21421
This commit is contained in:
Craig Scott 2024-06-01 17:34:27 +10:00
parent 719b461b9c
commit afa1d0d0e3
No known key found for this signature in database
GPG Key ID: 6FF37CBDCCADED9F

View File

@ -238,10 +238,16 @@ void QCMake::configure()
#ifdef Q_OS_WIN
UINT lastErrorMode = SetErrorMode(0);
#endif
// Apply the same transformations that the command-line invocation does
auto sanitizePath = [](QString const& value) -> std::string {
std::string path = cmSystemTools::CollapseFullPath(value.toStdString());
cmSystemTools::ConvertToUnixSlashes(path);
return path;
};
this->CMakeInstance->SetHomeDirectory(this->SourceDirectory.toStdString());
this->CMakeInstance->SetHomeDirectory(sanitizePath(this->SourceDirectory));
this->CMakeInstance->SetHomeOutputDirectory(
this->BinaryDirectory.toStdString());
sanitizePath(this->BinaryDirectory));
this->CMakeInstance->SetGlobalGenerator(
this->CMakeInstance->CreateGlobalGenerator(
this->Generator.toStdString()));