xsubpp
СОДЕРЖАНИЕ
ИМЯ
xsubpp - компилятор для преобразования кода Perl XS в код C
СИНТАКСИС
xsubpp [-v] [-except] [-s pattern] [-prototypes] [-noversioncheck] [-nolinenumbers] [-nooptimize] [-typemap typemap] [-output filename]... file.xs
ОПИСАНИЕ
Этот компилятор обычно запускается makeфайлами, созданными ExtUtils::MakeMaker или Module::Build, или другими инструментами для построения модулей Perl.
xsubpp будет компилировать код XS в код C, встраивая конструкции, необходимые для того, чтобы функции C могли манипулировать значениями Perl, и создавая «клей», необходимый для доступа Perl к этим функциям. Компилятор использует typemaps для определения способа сопоставления параметров и переменных функций C со значениями Perl.
Компилятор будет искать файлы typemap под названием typemap. Он будет использовать следующий путь поиска для нахождения стандартных typemap, причем самый правый typemap будет иметь приоритет.
../../../typemap:../../typemap:../typemap:typemap Он также будет использовать стандартный typemap, установленный как ExtUtils::typemap.
ПАРАМЕТРЫ
Обратите внимание, что параметр XSOPT MakeMaker может быть использован для добавления этих параметров в любые makeфайлы, сгенерированные MakeMaker.
- -hiertype
-
Сохраняет '::' в именах типов, чтобы можно было сопоставить иерархические типы C++.
- -except
-
Добавляет в код C заглушки для обработки исключений.
- -typemap typemap
-
Указывает, что пользовательский typemap должен иметь приоритет над стандартными typemaps. Этот параметр можно использовать несколько раз, при этом последний typemap будет иметь наивысший приоритет.
- -output filename
-
Указывает имя выходного файла. Если файл не указан, вывод будет записан в стандартный вывод.
- -v
-
Выводит номер версии xsubpp в стандартный вывод и завершает работу.
- -prototypes
-
По умолчанию xsubpp не будет автоматически генерировать код прототипов для всех xsubs. Этот флаг включит прототипы.
- -noversioncheck
-
Отключает проверку во время выполнения, определяющую, имеют ли файл объектного кода (полученный из файла
.xs) и файлы.pmодинаковый номер версии. - -nolinenumbers
-
Запрещает включение директив '#line' в выходной файл.
- -nooptimize
-
Отключает некоторые оптимизации. Единственная оптимизация, на которую сейчас влияет, — это использование targetов в выходном коде C (см. perlguts). Это может значительно замедлить сгенерированный код, но именно так работал xsubpp версии 5.005 и более ранних.
- -noinout
-
Отключить распознавание
IN,OUT_LISTиINOUT_LISTобъявлений. - -noargtypes
-
Отключить распознавание описаний сигнатуры функции в стиле ANSI.
- -C++
-
В настоящее время ничего не делает. Этот флаг не имеет действия во многих версиях Perl, по крайней мере, начиная с perl5.003_07. Он поддерживается для обратной совместимости.
- -s=... или -strip=...
-
Этот параметр не рекомендуется и запутан.
Если указан, заданная строка будет удалена из начала имени C-функции в сгенерированных функциях XS (если имя начинается с этого префикса). Это относится только к XSUB без блоков
CODEилиPPCODE. Например, XS:void foo_bar(int i);при вызове
xsubppс параметром-s foo_установит функциюfoo_barв Perl, но фактически вызоветbar(i)в C. Чаще всего это не то, что нужно, а режимы сбоя достаточно сложны, поэтому, пожалуйста, избегайте этого параметра, если это возможно.
СРЕДА
Переменные среды не используются.
АВТОР
Первоначально разработан Ларри Уоллом. Преобразован в модуль ExtUtils::ParseXS Кен Уильямсом.
ИСТОРИЯ ИЗМЕНЕНИЙ
См. файл Changes.
СМОТРИ ТАКЖЕ
perl(1), perlxs(1), perlxstut(1), ExtUtils::ParseXS
© 1993–2021 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.34.0/xsubpp