I have the following files in this directory:
~/test/lib/liblost.dylib
~/test/include/lost.h
I am trying to let my rubygem determine if the above library exists by doing the following in irb:
ruby-1.9.2-p290 :008 > dir_config('','~/test')
=> ["~/test/include", "~/test/lib"]
ruby-1.9.2-p290 :009 > have_library('lost')
checking for main() in -llost... no
=> false
Can someone please explain why this isn't working?
This looks like it's due to using
~to specify the home directory. The shell only expands~to the path of your home directory if it is the first character of a word. Whenmkmfconstructs the command line to call the compiler to check for the existence of the library it specifies the directory to call using the-Loption, and it ends up looking like-L~/test/lib, and so isn't expanded. You should be able to see this in themkmf.logfile.The fix is to avoid the
~character in the directory path, or ensure it gets expanded before it gets used in the call to the compiler.You could do this by changing
dir_config('','~/test')to: