2

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++

有害ではないと読みましたが、この警告を回避する方法はありますか? ここに同じ問題を抱えている人がいますが、解決策が見つかりません。

4

2 に答える 2

9

あなたのでこれを試してくださいextconf.rb

$warnflags.gsub!('-Wdeclaration-after-statement', '') if $warnflags

これはRuby 1.9.3 で変更されたif $warnflagsため必要です。mkmfそれがundefined method `gsub!' for nil:NilClassなければ、Ruby 1.9.2 でビルドしようとすると得られます。ただし、1.9.2 では c++ の警告は表示されません。Ruby が使用するデフォルトの警告は 1.9.3 で変更され、追加されました。

アップデート:

これはおそらくより良いです:

CONFIG['warnflags'].gsub!('-Wdeclaration-after-statement', '')

$warnflagsこれから移入されますが、これにはif $warnflagsfor < 1.9.3 は必要ありません。

于 2012-04-15T19:10:52.367 に答える
4

Makefile実行後に作成された結果を編集し、そこからcreate_makefile削除し-Wdeclaration-after-statementます。

于 2012-04-15T18:50:41.400 に答える