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"
Другие вопросы по тегам