extconf.rb как определить исходные файлы для использования
У меня есть небольшой проект расширения ruby, который был организован так:
./
Rakefile
ext/
mymodule/
extconf.rb
mymodule.rb
mymodule.cpp
source1.h
source1.cpp
source2.h
source2.cpp
Все работало, но мне нужно было поместить некоторые исходные файлы в каталог (я создаю / изменяю / проверяю все эти исходные файлы в репозитории git, чтобы просто обновить этот каталог при тестировании моего кода 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"}
Но это не сработало.
0 ответов
См., Что mkmf игнорирует файлы в подпапках при компиляции расширения C.
$INCFLAGS << " -I$(srcdir)/somesourcesfiles"
$VPATH << "$(srcdir)/somesourcesfiles"