Подробнее подробности на моем блоге: http://blog.manki.in/2011/08/ajax-fie-upload.html .
Если вы можете передать второй аргумент make_makefile
, чтобы указать другой исходный каталог (например, make_makfile('native_extension', 'lib')
), это не приведет к включению вашего файла native_extension.c
. Глядя на источник для mkmf.rb, похоже, что есть какой-либо способ заставить его выглядеть в обоих местах, не переписывая созданный Makefile самостоятельно.
Вы можете использовать исходные файлы из других папок с помощью «extconf.rb» следующим образом:
require 'mkmf'
extension_name = 'native_extension'
dir_config(extension_name)
# enum all source files
$srcs = ["native_extension.c", "lib/file.c"]
# add include path to the internal folder
# $(srcdir) is a root folder, where "extconf.rb" is stored
$INCFLAGS << " -I$(srcdir)/lib"
# add folder, where compiler can search source files
$VPATH << "$(srcdir)/lib"
create_makefile(extension_name)