mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-09 15:20:56 -06:00
cmSystemTools: Add GetComspec method to get cmd on Windows
The function attempts to read the path to cmd executable from the COMSPEC environment variable. Falls back to cmd.exe if the respective environment variable is not set or path doesn't exist.
This commit is contained in:
@@ -573,13 +573,7 @@ cmGlobalNinjaGenerator::cmGlobalNinjaGenerator(cmake* cm)
|
||||
cm->GetState()->SetWindowsShell(true);
|
||||
|
||||
// Attempt to use full path to COMSPEC, default "cmd.exe"
|
||||
std::string comspec;
|
||||
if (cmSystemTools::GetEnv("COMSPEC", comspec) &&
|
||||
cmSystemTools::FileIsFullPath(comspec)) {
|
||||
this->Comspec = comspec;
|
||||
} else {
|
||||
this->Comspec = "cmd.exe";
|
||||
}
|
||||
this->Comspec = cmSystemTools::GetComspec();
|
||||
#endif
|
||||
cm->GetState()->SetNinja(true);
|
||||
this->FindMakeProgramFile = "CMakeNinjaFindMake.cmake";
|
||||
|
||||
@@ -970,6 +970,17 @@ cmSystemTools::WindowsVersion cmSystemTools::GetWindowsVersion()
|
||||
result.dwBuildNumber = osviex.dwBuildNumber;
|
||||
return result;
|
||||
}
|
||||
|
||||
std::string cmSystemTools::GetComspec()
|
||||
{
|
||||
std::string comspec;
|
||||
if (!cmSystemTools::GetEnv("COMSPEC", comspec) ||
|
||||
!cmSystemTools::FileIsFullPath(comspec)) {
|
||||
comspec = "cmd.exe";
|
||||
}
|
||||
return comspec;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
std::string cmSystemTools::GetRealPathResolvingWindowsSubst(
|
||||
|
||||
@@ -585,6 +585,9 @@ public:
|
||||
unsigned int dwBuildNumber;
|
||||
};
|
||||
static WindowsVersion GetWindowsVersion();
|
||||
|
||||
/** Attempt to get full path to COMSPEC, default "cmd.exe" */
|
||||
static std::string GetComspec();
|
||||
#endif
|
||||
|
||||
/** Get the real path for a given path, removing all symlinks.
|
||||
|
||||
Reference in New Issue
Block a user