我有一个 ruby 扩展的小项目,它的组织方式如下:
./
Rakefile
ext/
mymodule/
extconf.rb
mymodule.rb
mymodule.cpp
source1.h
source1.cpp
source2.h
source2.cpp
一切正常,但我需要将一些源文件放在一个目录中(我在 git repos 中创建/修改/测试所有这些源文件,以便在测试我的 C++ 代码时只需要更新这个目录)。所以新组织看起来像这样:
./
Rakefile
ext/
mymodule/
extconf.rb
mymodule.rb
mymodule.cpp
somesourcesfiles/
source1.h
source1.cpp
source2.h
source2.cpp
我现在的问题是如何指定 extconf.rb 在哪里找到源文件(extconf.rb 默认使用当前目录中的源文件)。
我已经在 extconf.rb 成功测试了这个:
myfiles = %w{somesourcefiles/source1 somesourcefiles/source2 mymodule}
$srcs = myfiles.map{|i| i + ".cpp"}
我收到一条错误消息,说链接器找不到一些“.o”文件,所以我添加了这个:
myfiles = %w{somesourcefiles/source1 somesourcefiles/source2 mymodule}
$srcs = myfiles.map{|i| i + ".cpp"}
$objs = myfiles.map{|i| i + ".o"}
但这没有用。