带有g ++的不需要的警告消息

时间:2012-04-15 18:49:18

标签: c++ ruby g++ warnings ruby-c-extension

我正在尝试为Ruby编写c ++扩展。除主文件外,我还有一个文件extconf.rb

require "mkmf"
$libs += " -lstdc++ "
create_makefile("file_name")

并且在执行ruby extconf.rb后,当我尝试使用g++键入make进行编译时,我收到警告:

cc1plus: warning: command line option "-Wdeclaration-after-statement" is valid for C/ObjC but not for C++

我读到它没有害处,但有没有办法避免这种警告?有一个人有同样的问题here,但无法找到解决方案。

2 个答案:

答案 0 :(得分:9)

extconf.rb

中试试这个
$warnflags.gsub!('-Wdeclaration-after-statement', '') if $warnflags

需要if $warnflags,因为在Ruby 1.9.3中更改了mkmf;没有它,如果你试图在Ruby 1.9.2上构建,你将获得undefined method `gsub!' for nil:NilClass。您不应该在1.9.2中获得c ++警告:Ruby使用的默认警告在1.9.3中已更改,并且已添加这些警告。

<强>更新

这可能更好:

CONFIG['warnflags'].gsub!('-Wdeclaration-after-statement', '')
从此填充

$warnflags,但这不需要if $warnflags for&lt; 1.9.3。

答案 1 :(得分:4)

修改运行Makefile后创建的结果create_makefile,然后从中删除-Wdeclaration-after-statement