我正在尝试使用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成功构建了项目。
答案 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删除了一些不必要的行并重新启动后,错误得到解决。