Finding ruby.h

Hi,

I’m building ruby extensions across many different OSes and
architectures.

Does anyone know an easy way to find ruby.h on any given system?

I’m told that perl has a “perl -V” or @ENV variable which gives some
paths I
can look through for perl.h.

Does Ruby have an equivalent? Is there a better way to find ruby.h?

Thanks,

-John

On Wed, Jan 14, 2009 at 02:20:00PM +0900, John Ky wrote:

Hi,

I’m building ruby extensions across many different OSes and architectures.

Does anyone know an easy way to find ruby.h on any given system?

I’m told that perl has a “perl -V” or @ENV variable which gives some paths I
can look through for perl.h.

Does Ruby have an equivalent? Is there a better way to find ruby.h?

This works on a couple of my systems:

require 'rbconfig'
loc = File.join( Config::CONFIG['archdir'], 'ruby.h')
if File.exist?( loc ) then
  puts loc
else
  puts "Unable to find ruby.h in #{loc}"
end

enjoy,

-jeremy

John Ky a écrit :

I’m building ruby extensions across many different OSes and architectures.

Does anyone know an easy way to find ruby.h on any given system?

I’m told that perl has a “perl -V” or @ENV variable which gives some paths I
can look through for perl.h.

Does Ruby have an equivalent? Is there a better way to find ruby.h?

My first idea for this kind of problem would be to check GNU autoconf /
configure.sh

LaP

Hi all,

Thanks everyone for your help. I’ve settled with this solution as I’ve
already got it working. Very much appreciated!

-John

On Wed, Jan 14, 2009 at 4:44 PM, Jeremy H.

John Ky wrote:

Does Ruby have an equivalent? Is there a better way to find ruby.h?

Thanks,

-John

I have used CMake to make a SWIG wrapper with success on Windows and
Linux. The FindRuby.cmake script does all of the hard work at locating
Ruby.h. CMake-2.6.2 (and possibly others) includes FindRuby.cmake and
can be used like so:

(Note: FindRuby.cmake doesn’t export RUBY_FOUND, so I create that var
myself)

Main CMakeLists.txt:

SET(RUBY_FOUND FALSE)
FIND_PACKAGE( Ruby)
if(RUBY_INCLUDE_PATH AND RUBY_LIBRARY)
SET(RUBY_FOUND TRUE)
endif(RUBY_INCLUDE_PATH AND RUBY_LIBRARY)

if(RUBY_FOUND)
INCLUDE_DIRECTORIES( ${RUBY_INCLUDE_PATH})
endif(RUBY_FOUND)

CMakeLists.txt for each library in app:

if(RUBY_FOUND)
SET_SOURCE_FILES_PROPERTIES(RbDynamic.i PROPERTIES SWIG_FLAGS
“-autorename”)
SET_SOURCE_FILES_PROPERTIES(RbDynamic.i PROPERTIES CPLUSPLUS ON)
SET_SOURCE_FILES_PROPERTIES(RbDynamic.i PROPERTIES SWIG_FLAGS
“-includeall”)
SWIG_ADD_MODULE( rbdynamic ruby RbDynamic.i )
SWIG_LINK_LIBRARIES( rbdynamic ${RUBY_LIBRARY}
${MIIND_LIBRARY_PREFIX}dynamic
)
endif(RUBY_FOUND)

CMake is a doddle to use if you don’t already know it, and is cross
platform (I’ve only used Windows and Linux). Check it out at
www.cmake.org

Dave H.