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

时间:2019-04-13 09:18:24

标签: visual-studio cmake nvcc

我正在尝试使用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工具包(10.0,10.1)和Microsoft Visual Studio(2017-MSVC 14.16,2019-MSVC 14.20)的不同组合。这些都不能消除错误。

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

4 个答案:

答案 0 :(得分:0)

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

检查您的PATH环境变量。在我的系统PATH中,值之一用双引号引起来。这是我用来构建旧的Winamp Visualizer大声笑的旧DirectX 9库的路径。

请小心,因为Windows 10隐藏了某些PATH值用双引号引起来的事实。当它向您显示已解析的值列表时,不会显示双引号。您必须单击“编辑文本...”按钮才能将PATH变量视为一个长字符串。我还从任何值中删除了所有结尾的“ \”字符,但是我不确定这是否有所不同。

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

如果这不能解决问题,您可以遍历批处理文件,并通过在各个位置放置“ echo made it here”,直到发现错误的出处来进行一些可怜的人的调试。

答案 1 :(得分:0)

我有同样的问题。

就我而言,它不是PATH变量。问题是从用户名派生的TEMP或TMP。如果用户名包含空格,则应在开始编译之前将TMP和TEMP设置为没有空格的路径。

答案 2 :(得分:0)

我有同样的问题。

在我的情况下,这是因为命令行中的autoexec错误。因此,我清理了注册表中的相应条目(HKLM \ Software \ Microsoft \ Command Processor \ AutoRun),一切开始正常工作。

如果这样做没有帮助,建议您在PC上创建一个新帐户并在其中进行测试。如果一切正常,则可能与Windows配置文件配置有关(例如我的情况)。

答案 3 :(得分:0)

CMakeError.log或CMakeOutput.log文件将包含有关此错误的更多信息。 (您可以找到vcvars64.bat)

对我来说,在这些文件中它说“输入行太长”和“命令的语法不正确”。就我而言,这是由于PATH环境变量过长引起的。从PATH删除了一些不必要的行并重新启动后,错误得到解决。