Ruby 3.1.0 リファレンスマニュアル > ライブラリ一覧 > mkmfライブラリ > Kernelモジュール > create_makefile (private)

instance method Kernel#create_makefile

create_makefile(target, srcprefix = nil) -> true[permalink][rdoc] [added by mkmf]

[TODO]

Kernel#have_library などの各種検査の結果を元に、拡張ライブラリをビルドするための Makefile を生成します。

extconf.rb は普通このメソッドの呼び出しで終ります。

[PARAM] target:
ターゲットとなる拡張ライブラリの名前を指定します。例えば、拡張ライブラリで "Init_foo" という関数を定義している場合は、"foo" を指定します。 '/' を含む場合は、最後のスラッシュ以降のみをターゲット名として使用します。残りはトップレベルのディレクトリ名と見なされ、生成された Makefile はそのディレクトリ構造に従います。例えば、'test/foo' を指定した場合、拡張ライブラリは 'test' ディレクトリにインストールされます。この拡張ライブラリを Ruby スクリプトから使用するときは "require 'test/foo'" とする必要があります。
[PARAM] srcprefix:
ソースコードがあるディレクトリ名を指定します。省略した場合は extconf.rb があるディレクトリを使用します。

以下のようなディレクトリ構成の場合:

ext/
   extconf.rb
   test/
      foo.c

このようにします。

require 'mkmf'
create_makefile('test/foo', 'test')

このようにして作った Makefile で 'make install' すると拡張ライブラリは、以下のパスにインストールされます。

/path/to/ruby/sitearchdir/test/foo.so