Модуль сборки perl с исходным кодом c из другого модуля

Я работаю над модулем, который я хотел бы иметь два бэкэнда, Module(::PerlArray) а также Module::PDL (который может зависеть от Module). Оба нуждаются в доступе к functions.c/.h файл для строительства. Этот файл имеет довольно сложную логику, необходимую для модуля. Вместо того, чтобы распространять его отдельно для каждого модуля, есть ли способ сохранить его вместе с Module::PP в системе, а затем добавить его в соответствующие флаги сборки в EU::MM или же M::B (учитывая сложность здесь, вероятно, последнее)?

Проще говоря

--Module--
Module.pm
Module/PerlArray.pm
Module/PerlArray.xs (#include functions.h
              #include perlarray_backend.h)
Module/src/functions.c
Module/src/perlarray_backend.c
Module/inc/functions.h
Module/inc/perlarray_backend.h

--Module::PDL--
Module/PDL.pm
Module/PDL.xs (#include functions.h /*from Module*/
               #include pdl_backend.h)
Module/src/pdl_backend.c
Module/inc/pdl_backend.h

и компиляция делает functions.o и ссылки. Я уверен, что смогу выяснить, как правильно установить флаги, но как я могу заставить модуль сохранять functions.c файл при установке, и как я могу найти его при установке Module::PDL? Есть ли место, где я могу разместить functions.c/.h?

2 ответа

Вы смотрели на DBI? Он делает то, что вы предлагаете: он устанавливает некоторые файлы.h, которые драйверы DBD могут #include включить в свой код XS, а также библиотеку, которую могут вызывать драйверы DBD.

Модули должны быть установлены отдельно. То есть, если у меня установлены все необходимые модули Perl (но они не обязательно лежат в исходной форме), тогда должна быть возможность установить все модули в один распределенный tar-файл без ссылки на источник для любого другого модуля.

У вас есть варианты. Один из них заключается в том, чтобы один исходный каталог создавал несколько распределенных tar-шариков, и каждый из них мог иметь копию общего ресурса. function.[ch] в распределенном источнике.

Другой основной вариант - объединить оба модуля в один распределенный tar-шар.

Другие вопросы по тегам