如何解决:“nvcc致命错误:无法使用vcvars64.bat设置Microsoft Visual Studio的环境”

4

我正在尝试使用Visual Studio(打开文件夹模式)构建CMake项目。

构建该项目需要Nvcc。

我遇到了以下错误:

  The CUDA compiler

    "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.1/bin/nvcc.exe"

  is not able to compile a simple test program.

  It fails with the following output:

    Change Dir: [PROJECT_PATH]/build/Test_Release/CMakeFiles/CMakeTmp

    Run Build Command:"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/Ninja/ninja.exe" "cmTC_d4aa6"
    [1/3] Building CUDA object CMakeFiles\cmTC_d4aa6.dir\main.cu.obj
    FAILED: CMakeFiles/cmTC_d4aa6.dir/main.cu.obj 
    cmd.exe /C "C:\PROGRA~1\NVIDIA~2\CUDA\v10.1\bin\nvcc.exe     -x cu -c main.cu -o CMakeFiles\cmTC_d4aa6.dir\main.cu.obj && C:\PROGRA~1\NVIDIA~2\CUDA\v10.1\bin\nvcc.exe     -x cu -M main.cu -MT CMakeFiles\cmTC_d4aa6.dir\main.cu.obj -o CMakeFiles\cmTC_d4aa6.dir\main.cu.obj.d"
    nvcc fatal   : Could not set up the environment for Microsoft Visual Studio using 'C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.20.27508/bin/HostX64/x64/../../../../../../../VC/Auxiliary/Build/vcvars64.bat'
    ninja: build stopped: subcommand failed.



  CMake will not be able to correctly generate this project.        C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.13/Modules/CMakeTestCUDACompiler.cmake   46  

我尝试了不同的 Nvidia CUDA Toolkit 组合(10.0、10.1)和 Microsoft Visual Studio(2017 - MSVC 14.16,2019 - MSVC 14.20)。但是没有一个可以消除这个错误。

在其他机器上,我成功地使用相同版本的 Visual Studio 和 nvcc 构建了该项目。

5个回答

4

我曾经遇到同样的问题,这是我解决的方法。

检查你的PATH环境变量。在我的系统中,PATH变量的一个值被双引号括起来了。那是我用来构建旧版Winamp可视化插件所使用的旧版DirectX 9库的路径。

要小心了,因为Windows 10隐藏了一些PATH值被双引号括起来的事实。当它向你展示已解析的值列表时,并没有显示双引号。你必须点击“编辑文本…”按钮才能将PATH变量作为一个长字符串查看。我还从任何值中删除了所有尾随的“\”字符,但我不确定这是否有影响。

由于你正在处理环境变量,因此最好在编辑掉任何双引号后重新启动计算机并尝试再次构建。

如果这没有解决问题,你可以逐步执行批处理文件,并在各种地方放置“echo made it here”的语句进行贫民窟式的调试,直到找到错误的来源。


3

我遇到了同样的问题。

在我的情况下,问题不是 PATH 变量。问题出在 TEMP 或 TMP 上,它们是由用户名派生而来的。当你的用户名包含空格时,在开始编译之前,你应该将 TMP 和 TEMP 设置为没有空格的路径。


1
CMakeError.log或CMakeOutput.log文件将包含有关此错误的更多信息。(您可以查找vcvars64.bat)
对我来说,在这些文件中,它说“输入行太长”和“命令语法不正确”。在我的情况下,这是由于PATH环境变量过长引起的。从PATH中删除一些不必要的行并重新启动后,错误得到解决。

0

我曾经遇到过同样的问题。

在我的情况下,是因为命令行中的自动执行设置不正确。所以我清理了注册表中相应的条目(HKLM\Software\Microsoft\Command Processor\AutoRun),然后一切都开始正常工作了。

如果这并没有帮助,我建议您在您的电脑上创建一个新账户并在那里进行测试。如果一切正常 - 那很可能是您的Windows配置文件出了问题(就像在我的情况下一样)。


0

不一定是 PATH 的问题。显然,如果任何一个环境变量包含双引号(“"”),就会出现这种情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接