line指令的样式是GCC扩展

Gen*_*oil 3 c++ linux gcc cuda

这是什么意思,我该如何摆脱呢?让我解释:

我正在与一个开源项目合作,该项目的全局编译器设置包括-Werror和-pedantic,因此为了使我的贡献被接受,我必须遵守这些规定。

其次,我是Windows专家,所以我很高兴地构建了该项目的新组件,直到现在意识到它无法在Linux上编译,并在每行上都抛出了这些警告(在每个第3个字符上特定)的CUDA(.cu)源文件,它是我组件的一部分。

我正在使用带有FindCUDA脚本的cmake来编译CUDA。源文件不包含任何#line指令,因此对于GCC抱怨的内容我一无所知。

首先,我认为这是行尾,但是Linux的“文件”命令将.cu文件报告为“ C源,ASCII文本”,而不是“带有CRLF行终止符”。

开源项目的其余部分不包含任何CUDA,因此我无可比拟。

Pau*_*l R 5

我认为正在发生的事情是nvcc正在从.cu源文件生成C源以供gcc使用,并且这样做包括了形式为gcc的行指令#1234。通过与gcc -pedantic您一起编译此中间C代码,您会遇到问题,因为它们是gcc样式的行指令,并且是非标准的。解决方案是-pedantic至少在项目的CUDA部分不使用。