mirror of
https://github.com/reactos/CMake.git
synced 2024-12-02 00:26:18 +00: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:
parent
06d607271e
commit
c3b80e8664
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user