我已设置了我的CMakeLists.txt,以便${CUDA_HOST_COMPILER}
为/usr/local/cuda/bin/gcc
(指向/usr/bin/gcc-4.9
)。这是应该的,并且一直对我很好......直到今天。我跑了一个版本,在中间链接阶段,我得到了:
"/usr/local/cuda/bin/gcc": No such file or directory
CMakeFiles/tester.dir/build.make:2335: recipe for target 'CMakeFiles/wherever/foo_intermediate_link.o' failed
仔细观察,结果是编译nvcc命令是:
/usr/local/cuda/bin/nvcc foo.cu -dc -o CMakeFiles/someplace/foo.cu.o -ccbin /usr/local/cuda/bin/gcc -m64 etc. etc.
但是中间链接命令是
/usr/local/cuda/bin/nvcc -gencode arch=compute_30,code=compute_30 -g -G --generate-line-info -m64 -ccbin \"/usr/local/cuda/bin/gcc\" -dlink etc. etc.
请注意转义的\"
。为什么会这样?
PS - 我的主要可疑原因是apt-get upgrade
的效果可能改变了我的CMake版本(这是Debian Stretch机器)。
答案 0 :(得分:2)
我似乎是对的:在/usr/share/CMake/FindCUDA.cmake
第1554行,我们需要替换:
list(APPEND nvcc_flags -ccbin "\"${CUDA_HOST_COMPILER}\"")
与
list(APPEND nvcc_flags -ccbin "${CUDA_HOST_COMPILER}")
它不会用额外的引号括起你的编译器路径。