Unwanted warning message with g++
-
31-05-2021 - |
Question
I am trying to write a c++ extension for Ruby. In addition to the main file, I have a file extconf.rb
:
require "mkmf"
$libs += " -lstdc++ "
create_makefile("file_name")
and, after doing ruby extconf.rb
, when I try to compile it with g++
by typing make
, I get the warning:
cc1plus: warning: command line option "-Wdeclaration-after-statement" is valid for C/ObjC but not for C++
I read that it is not harmful, but is there a way to avoid this warning? There is a person with the same problem here, but the solution cannot be found.
Solution
Edit the resulting Makefile
created after running create_makefile
and remove the -Wdeclaration-after-statement
from there.
OTHER TIPS
Try this in your extconf.rb
:
$warnflags.gsub!('-Wdeclaration-after-statement', '') if $warnflags
the if $warnflags
is needed because mkmf
changed in Ruby 1.9.3; without it you'll get undefined method `gsub!' for nil:NilClass
if you try to build on Ruby 1.9.2. You shouldn’t get the c++ warning in 1.9.2 though: the default warnings Ruby uses changed in 1.9.3 and these have been added.
Update:
This is probably better:
CONFIG['warnflags'].gsub!('-Wdeclaration-after-statement', '')
$warnflags
gets populated from this, but this doesn't need the if $warnflags
for < 1.9.3.