【问题标题】:How to solve: "nvcc fatal : Could not set up the environment for Microsoft Visual Studio using vcvars64.bat"如何解决:“nvcc 致命:无法使用 vcvars64.bat 为 Microsoft Visual Studio 设置环境”
【发布时间】:2019-09-03 22:37:27
【问题描述】:

我正在尝试使用 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。

【问题讨论】:

    标签: visual-studio cmake nvcc


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。

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

      【讨论】:

        【解决方案3】:

        我遇到了同样的问题。

        就我而言,这是因为我的命令行中的 autoexec 不正确。所以我清理了注册表中的相应条目(HKLM\Software\Microsoft\Command Processor\AutoRun),一切都开始工作了。

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 2020-09-18
            • 2019-07-15
            • 2013-09-14
            • 2020-10-04
            • 1970-01-01
            • 1970-01-01
            • 2015-07-03
            • 1970-01-01
            相关资源
            最近更新 更多