通过Chocolatey安装后nmake无法工作,Elixir开发环境搭建求助
我正在搭建Elixir开发环境,选用Chocolatey作为包管理器,参考了其他项目开发者的经验。目前已通过以下命令安装两个包:
choco install visualstudio2022community choco install visualstudio2022buildtools
查询可用的VS2022相关包时,发现有大量选项,不确定是否因缺少部分包导致问题:
C:\Windows\System32>choco search visualstudio2022 Chocolatey v2.1.0 visualstudio2022buildtools 117.6.3 [Approved] visualstudio2022community 117.6.3 [Approved] visualstudio2022enterprise 117.6.3 [Approved] visualstudio2022professional 117.6.3 [Approved] visualstudio2022-remotetools 17.0.33103.184 [Approved] Downloads cached for licensed users visualstudio2022teamexplorer 117.6.3 [Approved] visualstudio2022testagent 117.6.3 [Approved] visualstudio2022testcontroller 117.6.3 [Approved] visualstudio2022-workload-azure 1.0.0 [Approved] visualstudio2022-workload-azurebuildtools 1.0.0 [Approved] visualstudio2022-workload-data 1.0.0 [Approved] visualstudio2022-workload-databuildtools 1.0.0 [Approved] visualstudio2022-workload-datascience 1.0.1 [Approved] visualstudio2022-workload-manageddesktop 1.0.1 [Approved] visualstudio2022-workload-manageddesktopbuildtools 1.0.0 [Approved] visualstudio2022-workload-managedgame 1.0.0 [Approved] visualstudio2022-workload-nativecrossplat 1.0.0 [Approved] visualstudio2022-workload-nativedesktop 1.0.0 [Approved] visualstudio2022-workload-nativegame 1.0.0 [Approved] visualstudio2022-workload-nativemobile 1.0.0 [Approved] visualstudio2022-workload-netcrossplat 1.0.0 [Approved] visualstudio2022-workload-netweb 1.0.0 [Approved] visualstudio2022-workload-node 1.0.0 [Approved] visualstudio2022-workload-nodebuildtools 1.0.0 [Approved] visualstudio2022-workload-office 1.0.0 [Approved] visualstudio2022-workload-officebuildtools 1.0.0 [Approved] visualstudio2022-workload-python 1.0.0 [Approved] visualstudio2022-workload-universal 1.0.0 [Approved] visualstudio2022-workload-universalbuildtools 1.0.0 [Approved] visualstudio2022-workload-vctools 1.0.0 [Approved] visualstudio2022-workload-visualstudioextension 1.0.0 [Approved] visualstudio2022-workload-visualstudioextensionbuildtools 1.0.0 [Approved] visualstudio2022-workload-webbuildtools 1.0.0 [Approved] visualstudio2022-workload-xamarinbuildtools 1.0.0 [Approved]
当前核心问题:安装程序未自动配置正确的环境变量,导致nmake无法正常工作。系统中找到4个nmake.exe,但不确定该用哪一个。参考指南推荐WSL,但仅适用于Web服务器搭建,对客户端应用构建无帮助。希望尽量减少手动操作,简化安装步骤,也考虑切换到Winget。
已尝试的操作及问题
- 手动运行VS2022安装程序,仍无法解决环境变量配置困惑。
- 错误提示中的命令因引号问题无法执行:
C:\Users\tester\Projects\Elixir\my_app>cmd /K "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
'C:\Program' is not recognized as an internal or external command,
operable program or batch file.
- 手动添加某个nmake路径到环境变量后,出现新错误:
** (Mix) Could not compile with "nmake" (exit status: 2).
One option is to install a recent version of
Visual C++ Build Tools
either manually or using Chocolatey -choco install VisualCppBuildTools.安装完成后,在「Program Files (x86)」目录下查找「Microsoft Visual Studio」,记下版本号最高的文件夹完整路径。打开「运行」对话框,输入以下命令(确保路径和版本号正确):
cmd /K "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64该命令会打开一个已配置好必要环境变量的命令提示符,在其中可执行
mix compile、mix deps.compile和mix test命令。
- 尝试安装VisualCppBuildTools时,出现1603错误:
Exit code was '1603'. Exit code indicates the following: Generic MSI Error. This is a local environment error, not an issue with a package or the MSI itself - it could mean a pending reboot is necessary prior to install or something else (like the same version is already installed). Please see MSI log if available.)
解决方案
1. 修复vcvarsall.bat命令的引号问题
路径包含空格时,需要嵌套引号才能正确执行,正确命令格式为:
cmd /K ""C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat"" amd64
更简便的方法:直接打开「Visual Studio 2022 开发人员命令提示符」,它会自动配置好所有VC环境变量,无需手动执行脚本。
2. 确保安装了C++工具集工作负载
你当前安装的visualstudio2022buildtools默认可能未包含nmake所需的C++工具,需补充安装对应的工作负载:
choco install visualstudio2022-workload-vctools --package-parameters "--includeRecommended"
该包会安装完整的VC编译工具链,包括nmake、编译器及相关依赖。
3. 解决1603安装错误
- 先重启电脑,清除系统中可能存在的挂起安装进程;
- 检查是否已安装相同版本的组件,可通过「控制面板→程序和功能」卸载重复的Visual Studio相关条目;
- 尝试强制重装包:
choco install visualstudio2022-workload-vctools --force --package-parameters "--includeRecommended"
4. 切换到Winget的替代方案
如果Winget更符合你的需求,可执行以下命令自动安装VS Build Tools及C++工具链:
winget install Microsoft.VisualStudio.2022.BuildTools --override "--add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --includeOptional --passive --norestart"
安装完成后,同样通过「Visual Studio 2022 开发人员命令提示符」运行Elixir编译命令即可。
5. 验证环境配置
在配置好环境的命令提示符中,执行以下命令验证nmake是否可用:
nmake /? mix compile
若能正常输出nmake帮助信息且mix编译无错误,则环境配置成功。
内容的提问来源于stack exchange,提问作者Hakanai

