本文简要介绍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 MakeMakefile.create_header用法及代码示例
- Ruby MakeMakefile.convertible_int用法及代码示例
- Ruby MakeMakefile.enable_config用法及代码示例
- Ruby MakeMakefile.have_const用法及代码示例
- Ruby MakeMakefile.with_config用法及代码示例
- Ruby MatchData.pre_match用法及代码示例
- Ruby Matrix lup()用法及代码示例
- Ruby Matrix unitary?()用法及代码示例
- Ruby Matrix symmetric?()用法及代码示例
- Ruby Matrix t()用法及代码示例
- Ruby Matrix identity()用法及代码示例
- Ruby Matrix hash()用法及代码示例
- Ruby Matrix hadamard_product()用法及代码示例
- Ruby Matrix singular?()用法及代码示例
- Ruby Math sqrt()用法及代码示例
- Ruby Matrix round()用法及代码示例
- Ruby Matrix collect()用法及代码示例
- Ruby Math.acosh用法及代码示例
- Ruby Markdown类用法及代码示例
- Ruby Matrix hermitian?()用法及代码示例
- Ruby Matrix row_vectors()用法及代码示例
- Ruby Matrix conjugate()用法及代码示例
- Ruby Math.asinh用法及代码示例
- Ruby Matrix cofactor()用法及代码示例
- Ruby Matrix rectangular()用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 MakeMakefile.create_makefile。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。