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

Visual studio 如何解决:“nvcc致命:无法使用vcvars64.bat为Microsoft Visual Studio设置环境”,visual-studio,cmake,nvcc,Visual Studio,Cmake,Nvcc,我正在尝试使用VisualStudio打开文件夹模式构建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: C

我正在尝试使用VisualStudio打开文件夹模式构建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在其他机器上成功地构建了该项目。

我也遇到了同样的问题,下面是我如何修复它的

检查PATH环境变量。在我的系统路径中,其中一个值用双引号括起来。这是我用来构建旧Winamp可视化工具lol的旧DirectX 9库的路径

请小心,因为Windows 10隐藏了某些路径值被双引号包围的事实。当它向您显示已解析的值列表时,不会显示双引号。您必须单击编辑文本。。。按钮将路径变量视为一个长字符串。我还从任何值中删除了任何尾随\字符,但我不确定这是否有区别

因为您要处理的是环境变量,所以最好在编辑掉任何双引号后重新启动,然后再次尝试构建


如果这还不能解决问题,你可以一步一步地检查批处理文件,把echo制作的文件放在不同的地方,进行一些穷人的调试,直到你找到错误的来源。

我也有同样的问题,下面是我如何修复它的

检查PATH环境变量。在我的系统路径中,其中一个值用双引号括起来。这是我用来构建旧Winamp可视化工具lol的旧DirectX 9库的路径

请小心,因为Windows 10隐藏了某些路径值被双引号包围的事实。当它向您显示已解析的值列表时,不会显示双引号。您必须单击编辑文本。。。按钮将路径变量视为一个长字符串。我还从任何值中删除了任何尾随\字符,但我不确定这是否有区别

因为您要处理的是环境变量,所以最好在编辑掉任何双引号后重新启动,然后再次尝试构建


如果这不能解决问题,您可以单步查看批处理文件,并将echo Make放在不同的位置,进行一些可怜的调试,直到找到错误的来源。

我也遇到了同样的问题


在我的例子中,它不是PATH变量。问题是TEMP或TMP,它们是从用户名派生的。当用户名包含空格时,在开始编译之前,应该将TMP和TEMP设置为不带空格的路径。

我也遇到了同样的问题


在我的例子中,它不是PATH变量。问题是TEMP或TMP,它们是从用户名派生的。当用户名包含空格时,在开始编译之前,应该将TMP和TEMP设置为不带空格的路径。

我也遇到了同样的问题

在我的例子中,这是因为命令行中的autoexec不正确。因此,我清理了注册表HKLM\Software\Microsoft\Command Processor\AutoRun中的相应条目,一切都开始工作


如果这没有帮助,我建议在你的电脑上创建一个新帐户,并在那里进行测试。如果一切正常-这可能与您的Windows配置文件配置有关,就像我的情况一样。

我也有同样的问题

在我的例子中,这是因为命令行中的autoexec不正确。因此,我清理了注册表HKLM\Software\Microsoft\Command Processor\AutoRun中的相应条目,一切都开始工作


如果这没有帮助,我建议在你的电脑上创建一个新帐户,并在那里进行测试。如果一切正常-可能与Windows配置文件配置有关,如我的情况。

CMakeError.log或CMakeOutput.log文件将包含有关此错误的详细信息。 您可以查找vcvars64.bat


对我来说,它说输入行太长,这些文件中的命令语法不正确。在我的例子中,这是由于PATH环境变量太长造成的。从PATH中删除一些不必要的行并重新启动后,错误已得到解决。

CMakeError.log或CMakeOutput.log文件将包含有关此错误的详细信息。 您可以查找vcvars64.bat

对我来说,它说输入行太长,这些文件中的命令语法不正确。在我的例子中,这是由于PATH环境变量太长造成的。在从路径中删除一些不必要的行并重新启动后,错误得到了解决