[CMake] CMake with VS2015 C++ Build Tools and missing ucrtbased.dll
Roger Leigh
rleigh at codelibre.net
Sun Jul 10 07:35:23 EDT 2016
I'm doing some initial testing of CMake 3.6.0 with the newly-released
Visual Studio 2015 Update 3 C++ Build Tools
(http://landinghub.visualstudio.com/visual-cpp-build-tools). I.e. the
standalone compiler without the IDE.
I'm configuring with:
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug|Release [in an x64 native
tools command prompt]
cmake -G "Visual Studio 14 2015 Win64"
And then building and running the unit tests with ctest.
With a release build using either generator, all the tests run and pass.
With a debug build using either generator, every test fails with the
message:
<TestName.exe> - System Error
The program can't start because ucrtbased.dll is missing from your
computer. Try reinstalling the program to fix this problem.
The DLL *is* installed on the system:
/cygdrive/c/Program Files (x86)/Microsoft SDKs/Windows
Kits/10/ExtensionSDKs/Microsoft.UniversalCRT.Debug/10.0.10240.0/Redist/Debug/arm/ucrtbased.dll
/cygdrive/c/Program Files (x86)/Microsoft SDKs/Windows
Kits/10/ExtensionSDKs/Microsoft.UniversalCRT.Debug/10.0.10240.0/Redist/Debug/arm64/ucrtbased.dll
/cygdrive/c/Program Files (x86)/Microsoft SDKs/Windows
Kits/10/ExtensionSDKs/Microsoft.UniversalCRT.Debug/10.0.10240.0/Redist/Debug/x64/ucrtbased.dll
/cygdrive/c/Program Files (x86)/Microsoft SDKs/Windows
Kits/10/ExtensionSDKs/Microsoft.UniversalCRT.Debug/10.0.10240.0/Redist/Debug/x86/ucrtbased.dll
/cygdrive/c/Program Files (x86)/Windows Kits/10/bin/arm/ucrt/ucrtbased.dll
/cygdrive/c/Program Files (x86)/Windows Kits/10/bin/arm64/ucrt/ucrtbased.dll
/cygdrive/c/Program Files (x86)/Windows Kits/10/bin/x64/ucrt/ucrtbased.dll
/cygdrive/c/Program Files (x86)/Windows Kits/10/bin/x86/ucrt/ucrtbased.dll
And the environment:
INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio
14.0\VC\INCLUDE;C:\Program Files (x86)\Windows
Kits\10\include\10.0.10240.0\ucrt;C:\Program Files (x86)\Windows
Kits\8.1\include\shared;C:\Program Files (x86)\Windows
Kits\8.1\include\um;C:\Program Files (x86)\Windows Kits\8.1\include\winrt;
LIB=C:\Program Files (x86)\Microsoft Visual Studio
14.0\VC\LIB\amd64;C:\Program Files (x86)\Windows
Kits\10\lib\10.0.10240.0\ucrt\x64;C:\Program Files (x86)\Windows
Kits\8.1\lib\winv6.3\um\x64;
LIBPATH=C:\Program Files (x86)\Microsoft Visual Studio
14.0\VC\LIB\amd64;C:\Windows\Microsoft.NET\Framework64\v4.0.30319;C:\Windows\Microsoft.NET\Framework64\;References\CommonConfiguration\Neutral;\Microsoft.VCLibs\14.0\References\CommonConfiguration\neutral;
Path=c:\opt\bin;C:\Program Files (x86)\MSBuild\14.0\bin\amd64;C:\Program
Files (x86)\Microsoft Visual Studio
14.0\VC\BIN\amd64;C:\Windows\Microsoft.NET\Framework64\v4.0.30319;C:\Windows\Microsoft.NET\Framework64\;C:\Program
Files (x86)\Windows Kits\8.1\bin\x64;C:\Program Files (x86)\Windows
Kits\8.1\bin\x86;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program
Files (x86)\PuTTY\;C:\Program Files (x86)\Windows Kits\8.1\Windows
Performance Toolkit\;C:\Program
Files\CMake\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Users\rleigh\AppData\Local\Programs\Git\cmd
But for some reason it's not on the PATH while the release version of
the ucrtbase.dll is. I'm not sure if this is a bug in the VS command
prompt environment--"Windows Kits/8.1/bin/x64" is on the path, but not
"Windows Kits/10/bin/x64", while both are in the include path... Could
this be a bug in the VS command prompt environment? Or is this more
likely to be a cmake issue?
The code in question is https://github.com/rleigh-dundee/xercesc-cmake
(I'm working on a conversion of the autotools and VS project files to a
cmake build), but I suspect this would happen with any project which
wants to run a debug executable.
Thanks,
Roger
More information about the CMake
mailing list