c++ - SCons 检测到 Visual C++ v14.2 (2019) 但未检测到 v14.1 (2017)

标签 c++ visual-c++ visual-studio-2017 scons

我需要构建一个使用 SCons 的依赖项,我需要使用 VC++2017 构建它,因为我拥有的另一个依赖项无法使用 VC++2019 构建。

SCons 成功检测到 VC++2019 (v14.2),但未检测到 VC++2017 (v14.1):

c:\Python27\Scripts\scons [...] --msvc-version=14.1 [...]
scons: Reading SConscript files ...
scons version: 3.1.1
python version: 2 7 13 'final' 0

scons: warning: VC version 14.1 not installed.  C/C++ compilers are most likely not set correctly.
 Installed versions are: ['14.2', '14.0', '11.0']
[...]
C++ compiler $CC does not work

我已经安装了 Visual Studio 2019 Enterprise 和 Visual Studio 2019 Build Tools,并且为这两者安装了适用于 v14.1 和 x86/x64 的平台工具/编译器。使用 VC++2017 平台工具进行编译在 Visual Studio 2019 以及使用 MSBuild 中运行良好,因此问题似乎仅出在 SCons 上。

SCons 如何检测 VC++2017 和 VC++2019,我应该从哪里开始寻找问题?

(有关于此的旧话题,但大多数是关于人们想知道为什么使用注册表和 vcvars.bat 的“经典”检测/配置方法不再有效,所以这些没有帮助)

最佳答案

对于当前的 scons,它会相信它从 vswhere.exe 返回的内容,对于该工具被认为是权威的版本——2017 年和 2019 年。你可以尝试看看它给你带来了什么。

vswhere -products * -property installationPath

该信息用于帮助找到所需的 vars.bat 文件,该文件导入所需的设置。

关于c++ - SCons 检测到 Visual C++ v14.2 (2019) 但未检测到 v14.1 (2017),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57477926/

相关文章:

c++ - 使用 'boost::optional' 参数与 boost::spirit 绑定(bind)成员函数

visual-studio - MSB3644 找不到框架的引用程序集

docker - 为什么我必须选择一个操作系统才能从VS2017生成Dockerfile?

c++ - 启动在 VS6 中创建的旧程序时出现问题

python - Visual Studio 2017 无法识别代码中的错误

c++ - 如何避免指针指向 '\0' 之后?

c++ - 如何用cout打印函数指针?

c++ - 在没有将 'new' 分配给指针的情况下创建的对象的生命周期

visual-c++ - VS 2013 找不到资源编译器DLL。请确保路径正确

c++ - LoadString 仅在我没有英文字符串表时才有效