mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-09 15:20:56 -06:00
Windows: Add support for running CMake tools through a symlink
When `cmake.exe` is executed through a symlink, `GetModuleFileNameW`
will return location of the link instead of the real path of
`cmake.exe`. This results in the following error output:
CMake Error: Could not find CMAKE_ROOT !!!
CMake has most likely not been installed correctly.
Use `cmSystemTools::GetRealPath` in `FindCMakeResources` on Windows
to resolve any symlink returned by `GetModuleFileNameW`.
This commit is contained in:
@@ -2107,8 +2107,12 @@ void cmSystemTools::FindCMakeResources(const char* argv0)
|
||||
(void)argv0; // ignore this on windows
|
||||
wchar_t modulepath[_MAX_PATH];
|
||||
::GetModuleFileNameW(NULL, modulepath, sizeof(modulepath));
|
||||
exe_dir =
|
||||
cmSystemTools::GetFilenamePath(cmsys::Encoding::ToNarrow(modulepath));
|
||||
std::string path = cmsys::Encoding::ToNarrow(modulepath);
|
||||
std::string realPath = cmSystemTools::GetRealPath(path, NULL);
|
||||
if (realPath.empty()) {
|
||||
realPath = path;
|
||||
}
|
||||
exe_dir = cmSystemTools::GetFilenamePath(realPath);
|
||||
#elif defined(__APPLE__)
|
||||
(void)argv0; // ignore this on OS X
|
||||
#define CM_EXE_PATH_LOCAL_SIZE 16384
|
||||
|
||||
Reference in New Issue
Block a user