带有 CUDA 的 CMake:用不必要的引号 (\) 括起来的 ccbin
CMake with CUDA: ccbin enclosed with unnecessary quotation marks (")
我已经设置了我的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.
请注意转义的"
s。为什么会这样?
PS - 我的主要怀疑原因是apt-get upgrade
的影响,它可能改变了我拥有的CMake版本中的某些内容(这是一台Debian Stretch机器)。
看来我是对的: 在 /usr/share/CMake/FindCUDA.cmake
中,第 1554 行,我们需要替换:
list(APPEND nvcc_flags -ccbin ""${CUDA_HOST_COMPILER}"")
跟
list(APPEND nvcc_flags -ccbin "${CUDA_HOST_COMPILER}")
这不会用额外的引号将编译器路径括起来。
相关文章:
- std::vector的包装器,使数组的结构看起来像结构的数组
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- 看起来is_nothrow_constructible_v()在MSVC中被破坏了,我错了吗
- 将大括号括起来的初始值设定项列表作为结构返回
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- 将 SDL2 与 CMake 链接起来
- 调用重载的"<大括号括起来的初始值设定项列表>"对于对来说就足够了是模棱两可的
- 如何使用connect将qml按钮与同一类的cpp函数连接起来
- 尽管一切看起来都很好,但值不会交换
- 尝试将 c 字符串数组与分隔符连接起来
- 为什么我会收到此错误?无法将 {lb, ub} 从<大括号括起来的初始值设定项列表>转换为 float(**)(float*, int)
- 有没有办法生成一个包含平方的序列,这些平方加起来就是一个整数平方?
- 计算数组重复次数的组合的有效算法,加起来达到给定的总和
- 自制的上衣:看起来一样,但不完全相同
- 为什么这个复合语句作为用大括号和括号括起来的语句序列似乎不是有效的语句表达式
- 从双引号括起来的子字符串中删除特定字符
- 大括号括起来的初始值设定项列表中的短 c++ 类构造函数
- 嵌套的大括号括起来的初始值设定项列表
- 如何使它看起来像正在下的雪
- 带有 CUDA 的 CMake:用不必要的引号 (\) 括起来的 ccbin