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:
parent
719b461b9c
commit
afa1d0d0e3
@ -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()));
|
||||
|
Loading…
x
Reference in New Issue
Block a user