Fix search of VCTargetsPath for VS2019 build. (#698)
diff --git a/emsdk.py b/emsdk.py
index 73f1027..04b083e 100644
--- a/emsdk.py
+++ b/emsdk.py
@@ -903,7 +903,29 @@
path = vswhere(16)
else:
path = vswhere(15)
- build_env['VCTargetsPath'] = os.path.join(path, 'Common7\\IDE\\VC\\VCTargets')
+
+ # Configuring CMake for Visual Studio needs and env. var VCTargetsPath to be present.
+ # How this is supposed to work is unfortunately very undocumented. See
+ # https://discourse.cmake.org/t/cmake-failed-to-get-the-value-of-vctargetspath-with-vs2019-16-7/1839/16
+ # for some conversation. Try a couple of common paths if one of them would work.
+ # In the future as new versions of VS come out, we likely need to add new paths into this list.
+ if 'VCTargetsPath' not in build_env:
+ vctargets_paths = [
+ os.path.join(path, 'MSBuild\\Microsoft\\VC\\v160\\'),
+ os.path.join(path, 'Common7\\IDE\\VC\\VCTargets')
+ ]
+ for p in vctargets_paths:
+ if os.path.isfile(os.path.join(p, 'Microsoft.Cpp.Default.props')):
+ debug_print('Set env. var VCTargetsPath=' + p + ' for CMake.')
+ build_env['VCTargetsPath'] = p
+ break
+ else:
+ debug_print('Searched path ' + p + ' as candidate for VCTargetsPath, not working.')
+
+ if 'VCTargetsPath' not in build_env:
+ errlog('Unable to locate Visual Studio compiler installation for generator "' + generator + '"!')
+ errlog('Either rerun installation in Visual Studio Command Prompt, or locate directory to Microsoft.Cpp.Default.props manually')
+ sys.exit(1)
# CMake and VS2017 cl.exe needs to have mspdb140.dll et al. in its PATH.
vc_bin_paths = [vs_filewhere(path, 'amd64', 'cl.exe'),