我最近下载了CUDA 7并将其设置为与我的项目配合使用。在Mac上,CUDA 7要求clang成为主机编译器。
现在,我使用了许多C ++ 11功能。我已经启用了这些,并将-std = c ++ 11传递给nvcc,这是有效的。但是,如果我将-Xcompiler -std = c ++ 11传递给nvcc,无论是否我自己也传递了-std = c ++ 11,我都会收到以下错误。错误是:
"无效的参数' -std = c ++ 11'不允许使用' C / ObjC'"
看起来这应该有用,它确实与GCC有关。任何人都有一个解决方法。否则,我将向Nvidia提交错误报告。
答案 0 :(得分:2)
nvcc -dryrun ...
将显示将执行的命令nvcc
。我目前无法访问CUDA 7,只有6.5,但我的问题包括两个编译生成的C源代码的命令。此代码由cudafe
生成,必须由C编译器编译,但-Xcompiler
为C和C ++模式添加了选项。
我认为与我的gcc情况不同的是,当你有错误时我会收到警告(这正是gcc和clang在这种情况下的不同之处)。对于这两个编译器,我没有看到任何方法来抑制它,所以我想你必须修复你的.cmake
文件以省略-Xcompiler
选项。这个选项不应该用于语言标准,只是一些特定于编译器的东西。
答案 1 :(得分:-3)
当然它不起作用。您在使用C或Objective-C编译器时指定C ++选项。源文件必须是C ++或Objective-C ++。