Packages / openSUSE Tumbleweed / Unspecified / perl-ExtUtils-Depends
[Source: perl-ExtUtils-Depends]
Package: perl-ExtUtils-Depends (0.8002-1.5)
[Project overview: perl-ExtUtils-Depends]
Легке створення XS-розширень, що залежать від XS-розширень
Цей модуль намагається спростити створення розширень Perl, які використовують функції та typemap, надані іншими розширеннями perl. Це означає, що розширення perl розглядається як спільна бібліотека, яка крім інтерфейсу perl надає також інтерфейси C та XS.
Це працює, доки базове (або "виробниче") розширення завантажується з прапорцем 'RTLD_GLOBAL' (зазвичай за допомогою
sub dl_load_flags {0x01}
в головному файлі _.pm_), якщо потрібно використовувати функції, визначені в модулі. Це "виробниче" розширення також має повідомити ExtUtils::MakeMaker конкретні функції для експорту, з аргументами до 'WriteMakefile' на кшталт:
FUNCLIST => [qw(function_name)],
DL_FUNCS => { 'Extension::Name' => [] },
Базова схема роботи — зібрати інформацію про модуль в екземплярі, а потім зберегти ці дані в бібліотеці Perl, звідки їх можна буде отримати пізніше. Об'єкт також може переформатувати цю інформацію у структури даних, потрібні функції WriteMakefile з ExtUtils::MakeMaker.
Про те, як вписати ваш модуль у цю схему, дивіться "hashref = ExtUtils::Depends::load (name)".
Створюючи новий об'єкт Depends, ви даєте йому ім'я — ім'я модуля, який будуєте. Також можна вказати імена модулів, від яких залежить цей модуль. Ці залежності завантажаться автоматично, а їхні typemap, заголовкові файли тощо буде об'єднано з даними вашого нового об'єкта. Коли ви зберігаєте дані свого об'єкта, список залежностей зберігається разом із ним, тож інший модуль, що залежить від вашого, не мусить знати точно, від яких модулів залежить ваш.
Наприклад:
Gtk2 depends on Glib
Gnome2::Canvas depends on Gtk2
ExtUtils::Depends->new ('Gnome2::Canvas', 'Gtk2');
this command automatically brings in all the stuff needed
for Glib, since Gtk2 depends on it.
Коли конфігураційна інформація зберігається, вона також містить метод класу 'Inline', який може успадковувати ваш модуль. Це дозволяє у вашому модулі просто написати на початку:
package Mymod;
use parent 'Mymod::Install::Files'; # to inherit 'Inline' method
А користувачі 'Mymod', які хочуть писати inline-код (за допомогою Inline), зможуть просто написати:
use Inline with => 'Mymod';
І для них буде додано всі потрібні заголовкові файли, define та бібліотеки.
'Mymod::Install::Files' також реалізує метод 'deps', який повертає список будь-яких модулів, від яких залежить 'Mymod' — зазвичай вам це не знадобиться:
require Mymod::Install::Files;
@deps = Mymod::Install::Files->deps;
Other Packages Related to perl-ExtUtils-Depends:
Download perl-ExtUtils-Depends
| Architecture | Package Size | Installed Size | Files |
|---|
| noarch | 29 KiB | 36 KiB | [list of files] |
Шляхи файлів пакета (6)
Paths come from the repository package-file index for the observed builds. They describe archive/package associations, not every file that will exist on a running system after maintainer scripts, alternatives, generated state, diversions, or installation choices.
- /usr/lib/perl5/vendor_perl/5.44.0/ExtUtils
- /usr/lib/perl5/vendor_perl/5.44.0/ExtUtils/Depends.pm
- /usr/share/doc/packages/perl-ExtUtils-Depends
- /usr/share/doc/packages/perl-ExtUtils-Depends/Changes
- /usr/share/doc/packages/perl-ExtUtils-Depends/README
- /usr/share/man/man3/ExtUtils::Depends.3pm.gz
Field source: openSUSE Tumbleweed OSS revision tumbleweed-oss-multiarch:4db10cdde3ad82c7e22be35753c9e164b4bdd30f92db4aee17a0d4c94c5f902f