我正在使用scons构建基于linux C的ruby扩展。获得包含路径的“正确”方法是什么? “对”,我的意思是它在1.9和1.8上开箱即用。
我不想使用mkmf / Makefile解决方案。
谢谢!戴夫
答案 0 :(得分:1)
如果你使用autoconf,你可以从米饭中借用ruby.ac:
http://github.com/jameskilton/rice/blob/master/ruby.ac
或者由于您使用的是其他构建系统,因此可以复制其行为。总结它的作用:
$RUBY -rrbconfig -e "puts(Config::CONFIG['$1'] || '')" <variable>
其中$ RUBY是ruby解释器(有时解释器安装有不同的名称,例如ruby1.8或ruby1.9)和&lt; variable&gt;是所需的配置变量
if ${ruby_config_rubyhdrdir} is empty: (e.g. ruby 1.8)
CPPFLAGS="-I${ruby_config_archdir}
else:
CPPFLAGS="-I${ruby_config_rubyhdrdir} ${ruby_config_rubyhdrdir}/${arch}
CFLAGS="${ruby_config_CFLAGS} ${ruby_config_CCDLFLAGS}"
LDFLAGS="-L${ruby_config_archdir} -L${ruby_config_libdir} ${ruby_config_LDFLAGS}"
LIBS="${ruby_config_LIBS} ${ruby_config_DLDLIBS}"
其中变量$ {ruby_config_ *}是使用上面的config命令确定的,例如:
ruby_config_foo=$RUBY -rrbconfig -e "puts(Config::CONFIG['$1'] || '')" foo