Generates the Makefile for your extension, passing along any options and preprocessor constants that you may have generated through other methods.
The target
name should correspond the name of the global
function name defined within your C extension, minus
the Init_
. For example, if your C
extension is defined as Init_foo
, then your target would
simply be âfooâ.
If any â/â characters are present in the target name, only the last name is interpreted as the target name, and the rest are considered toplevel directory names, and the generated Makefile will be altered accordingly to follow that directory structure.
For example, if you pass âtest/fooâ as a target name, your extension will
be installed under the âtestâ directory. This means that in order to load
the file within a Ruby program later, that directory structure will have to
be followed, e.g. require 'test/foo'
.
The srcprefix
should be used when your source files are not in
the same directory as your build script. This will not only eliminate the
need for you to manually copy the source files into the same directory as
your build script, but it also sets the proper target_prefix
in the generated Makefile.
Setting the target_prefix
will, in turn, install the generated
binary in a directory under your
RbConfig::CONFIG['sitearchdir']
that mimics your local
filesystem when you run make install
.
For example, given the following file tree:
ext/ extconf.rb test/ foo.c
And given the following code:
create_makefile('test/foo', 'test')
That will set the target_prefix
in the generated Makefile to
âtestâ. That, in turn, will create the following file tree when installed
via the make install
command:
/path/to/ruby/sitearchdir/test/foo.so
It is recommended that you use this approach to generate your makefiles,
instead of copying files around manually, because some third party
libraries may depend on the target_prefix
being set properly.
The srcprefix
argument can be used to override the default
source directory, i.e. the current directory. It is included as part of
the VPATH
and added to the list of INCFLAGS
.
Please login to continue.