【问题标题】:Warning when compiling .cu with -Wpedantic: "style of line directive is a GCC extension"使用 -Wpedantic 编译 .cu 时出现警告:“行指令样式是 GCC 扩展”
【发布时间】:2015-09-09 03:31:27
【问题描述】:

我正在合作一个开源项目,其中全局编译器设置包括 -Werror-pedantic,所以为了让我的贡献被接受,我必须遵守这些。

其次,我是一个 Windows 人,所以我很高兴地为这个项目构建了一个新组件,现在才意识到它不能在 Linux 上编译,抛出以下警告:

style of line directive is a GCC extension

在作为我的组件一部分的 CUDA (.cu) 源文件的每一行(具体而言,在每个第三个字符上)。

我正在使用 cmake 和 FindCUDA.cmake 脚本来编译 CUDA。源文件不包含任何 #line 指令,所以我完全不知道 GCC 抱怨什么。

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

开源项目的其余部分不包含任何 CUDA,所以我没有什么可比的。

这个警告到底是什么意思,我该如何摆脱它?

【问题讨论】:

标签: c++ linux gcc cuda


【解决方案1】:

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
相关资源
最近更新 更多