当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby MakeMakefile.create_makefile用法及代码示例


本文简要介绍ruby语言中 MakeMakefile.create_makefile 的用法。

用法

create_makefile(target, srcprefix = nil) { |conf| ... }

为您的扩展生成 Makefile,传递您可能通过其他方法生成的任何选项和预处理器常量。

target 名称应对应于 C 扩展中定义的全局函数名称,减去 Init_ 。例如,如果您的 C 扩展被定义为 Init_foo ,那么您的目标将只是 “foo”。

如果目标名称中出现任何“/” 字符,则只有姓氏被解释为目标名称,其余的被视为顶级目录名称,生成的 Makefile 将相应地更改以遵循该目录结构。

例如,如果您将“test/foo” 作为目标名称传递,您的扩展将安装在“test” 目录下。这意味着为了稍后在 Ruby 程序中加载文件,必须遵循该目录结构,例如require 'test/foo'

当您的源文件与构建脚本不在同一目录中时,应使用srcprefix。这不仅消除了您手动将源文件复制到与构建脚本相同的目录的需要,而且还在生成的 Makefile 中设置了正确的target_prefix

设置 target_prefix 将反过来将生成的二进制文件安装在 RbConfig::CONFIG['sitearchdir'] 下的目录中,该目录在您运行时模仿本地文件系统 make install

例如,给定以下文件树:

ext/
  extconf.rb
  test/
    foo.c

并给出以下代码:

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

这会将生成的 Makefile 中的 target_prefix 设置为 “test”。反过来,当通过make install 命令安装时,将创建以下文件树:

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

建议您使用这种方法来生成您的 makefile,而不是手动复制文件,因为某些第三方库可能依赖于正确设置的 target_prefix

srcprefix 参数可用于覆盖默认源目录,即当前目录。它作为 VPATH 的一部分包含在 INCFLAGS 列表中。

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 MakeMakefile.create_makefile。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。