From: Dave Harrison Date: 2009-01-15T02:39:06+09:00 Subject: Re: Finding ruby.h John Ky wrote: > [Note: parts of this message were removed to make it a legal post.] > > 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 > 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.