CUDA 7.0,无效参数' -std = c ++ 11'不允许与C / ObjC'

时间:2015-01-16 18:08:45

标签: c++11 cuda clang

我最近下载了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提交错误报告。

2 个答案:

答案 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 ++。