命令行切换MSVC版本
在 WIndows 下跑 Python 深度学习代码时,需要编译 C++ 库(点名 Pytorch3d),但是使用最新版本的 MSVC 进行编译的时候会报错,去 Github 看 Issue 时有提到降级可能有效,我们可以通过添加组件的方式直接下载指定版本的 MSVC 编译器。然后手动修改进行切换。为了怕后面遇到类似问题时忘记怎么搞,还是简单记录一下吧,具体操作如下:
首先打开 Visual Studio Installer,点击
修改
按钮在
单个组件
菜单中,找到指定版本的 MSVC注意编译器的名称是
MSVC v<xxx> - VS <xxxx> C++ x64/86 生成工具(v<xx>.<xx>)
,千万不要下错了下载完成后,我们找到 Visual Studio 的安装目录, 其中
VC
目录就包含了 MSVC 相关的文件进入
VC
目录,在Tools\MSVC
我们就可以找到安装的所有 MSVC 编译器我们可以进入一个子目录,进入
bin\Hostx64\x64
文件夹,然后在这个文件夹下打开 Developer PowerShell,输入.\cl.exe
查看版本1
2
3
4
5
6
7
8
9
10(base) PS C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64> cl
用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.25.28614 版
版权所有(C) Microsoft Corporation。保留所有权利。
用法: cl [ 选项... ] 文件名... [ /link 链接选项... ]
(base) PS C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64> .\cl.exe
用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.29.30147 版
版权所有(C) Microsoft Corporation。保留所有权利。
用法: cl [ 选项... ] 文件名... [ /link 链接选项... ]可以看到,当我们直接输入
cl
时,调用的是环境变量中设置的 MSVC 编译器,而输入.\cl.exe
直接调用当前目录下的cl.exe
时就会调用当前目录的 MSVC 编译器最后我们只需要切换当前环境变量中使用的
cl
就行,这里需要进入<vs-path>\VC\Auxiliary\Build
路径,在这个路径下面就制定了默认使用的 MSVC 版本
我们只需要修改其中的包含 VCToolsVersion
和
VCRedistVersion
字样的文件,将其中对应版本全部替换成我们需要的 MSVC 版本即可
Microsoft.VCToolsVersion.default.props
1 |
|
Microsoft.VCToolsVersion.default.txt
(这个文件实际上就一个版本号,直接改掉就可以)
1 | 14.25.28610 |
- 切换完成后,我们再使用 Developer Powershell 打开时就不会出问题了
注:上面的更改仅适用于命令行,在 Visual Studio 中可以直接手动更换,具体参考官方教程:How to: Modify the Target Framework and Platform Toolset | Microsoft Learn
使用命令行是因为 Python 编译 C 库需要从命令行调用,所以只能这样修改,而 cmake 等编译工具实际上也只需要指定版本即可,具体可以参考官方文档:MSVC_VERSION — CMake 3.26.0-rc4 Documentation