EnglischFranzösischSpanisch

Ad


OnWorks-Favicon

h2xs - Online in der Cloud

Führen Sie h2xs im kostenlosen OnWorks-Hosting-Provider über Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator aus

Dies ist der Befehl h2xs, der im kostenlosen OnWorks-Hosting-Provider über eine unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


h2xs - .h C-Header-Dateien in Perl-Erweiterungen konvertieren

ZUSAMMENFASSUNG


h2xs [OPTIONAL ...] [Headerdatei ... [extra_libraries]]

h2xs -h|-?|--help

BESCHREIBUNG


h2xs erstellt eine Perl-Erweiterung aus C-Header-Dateien. Die Erweiterung wird Funktionen enthalten
die verwendet werden kann, um den Wert jeder #define-Anweisung abzurufen, die sich im C-Header befand
Dateien.

Das Modulname wird für den Namen der Erweiterung verwendet. Wenn module_name nicht ist
wird der Name der ersten Header-Datei verwendet, mit dem ersten Zeichen
großgeschrieben.

Wenn die Erweiterung möglicherweise zusätzliche Bibliotheken benötigt, sollten sie hier aufgenommen werden. Die Erweiterung
Makefile.PL kümmert sich um die Überprüfung, ob die Bibliotheken tatsächlich existieren und wie sie
geladen werden soll. Die zusätzlichen Bibliotheken sollten in der Form -lm -lposix usw. angegeben werden.
genau wie auf der cc-Befehlszeile. Standardmäßig durchsucht Makefile.PL die
Bibliothekspfad, der von Configure bestimmt wird. Dieser Pfad kann durch Einfügen von Argumenten erweitert werden
der Form -L/andere/Bibliothek/Pfad im Argument der Extrabibliotheken.

Trotz seines Namens h2xs kann auch verwendet werden, um ein reines Perl-Skelettmodul zu erstellen. Siehe die
-X .

OPTIONAL


-A, --omit-autoload
Lassen Sie alle Autoload-Funktionen weg. Dies ist das gleiche wie -c entfernt aber auch die
"use AutoLoader"-Anweisung aus der .pm-Datei.

-B, --Betaversion
Verwenden Sie eine Versionsnummer im Alpha-/Beta-Stil. Verursacht die Versionsnummer "0.00_01", es sei denn
-v angegeben.

-C, --Omit-Änderungen
Verhindert die Erstellung des Änderungen -Datei und fügt der POD-Vorlage einen Abschnitt HISTORY hinzu.

-F, --cpp-Flags=Flags hinzufügen
Zusätzliche Flags, die dem C-Präprozessor beim Scannen des Headers nach Funktion angegeben werden müssen
Erklärungen. Schreibt diese Optionen in das generierte Makefile.PL Auch.

-M, --Func-Maske=regulär Ausdruck
wählt zu verarbeitende Funktionen/Makros aus.

-O, --overwrite-ok
Ermöglicht das Überschreiben eines bereits vorhandenen Erweiterungsverzeichnisses.

-P, --omit-pod
Lassen Sie den automatisch generierten Stub-POD-Abschnitt weg.

-X, --auslassen-XS
Lassen Sie den XS-Anteil weg. Wird verwendet, um ein reines Perl-Skelettmodul zu generieren. "-c" und "-f" sind
implizit aktiviert.

-a, --gen-accessors
Generieren Sie eine Accessormethode für jedes Element von Strukturen und Unions. Das erzeugte
Methoden werden nach dem Elementnamen benannt; gibt den aktuellen Wert des zurück
Element, wenn es ohne zusätzliche Argumente aufgerufen wird; und setzt das Element auf den
gelieferten Wert (und den neuen Wert zurückgeben), wenn er mit einem zusätzlichen Argument aufgerufen wird.
Eingebettete Strukturen und Unions werden als Zeiger und nicht als vollständig zurückgegeben
Struktur, um verkettete Anrufe zu erleichtern.

Diese Methoden gelten alle für den Ptr-Typ für die Struktur; zusätzlich zwei Methoden
sind für den Strukturtyp selbst konstruiert, "_to_ptr", der einen Ptr-Typ zurückgibt
die auf dieselbe Struktur zeigt, und eine "neue" Methode zum Konstruieren und Zurückgeben eines neuen
Struktur, initialisiert auf Nullen.

-b, --compat-version=Version
Erzeugt eine .pm-Datei, die mit der angegebenen Perl-Version abwärtskompatibel ist.

Für Versionen < 5.6.0 sind die Änderungen.
- keine Verwendung von 'our' (verwendet stattdessen 'use vars')
- keine 'Verwendungswarnungen'

Geben Sie eine höhere Kompatibilitätsversion als die Perl-Version an, die Sie verwenden, um
Ausführen von h2xs hat keine Auswirkungen. Wenn nicht angegeben, ist h2xs standardmäßig kompatibel mit
die Version von Perl, die Sie verwenden, um h2xs auszuführen.

-c, --Omit-Konstante
Lassen Sie "constant()" aus der .xs-Datei und das entsprechende spezialisierte "AUTOLOAD" aus der
.pm-Datei.

-d, --debuggen
Aktivieren Sie Debugging-Nachrichten.

-e, --Omit-Enumerationen=[regulär Ausdruck]
If regulär Ausdruck nicht gegeben ist, überspringen Sie alle Konstanten, die in einem C . definiert sind
Aufzählung. Andernfalls überspringen Sie nur die Konstanten, die in einer Aufzählung definiert sind, deren
Name stimmt überein regulär Ausdruck.

Da regulär Ausdruck optional ist, stellen Sie sicher, dass auf diesen Schalter at . folgt
mindestens ein weiterer Schalter, wenn Sie ihn weglassen regulär Ausdruck und haben einige ausstehende Argumente
wie Header-Dateinamen. Das ist in Ordnung:

h2xs -e -n Modul::Foo foo.h

Das ist nicht in Ordnung:

h2xs -n Modul::Foo -e foo.h

Im letzteren Fall wird foo.h als regulär Ausdruck.

-f, --Macht
Ermöglicht das Erstellen einer Erweiterung für einen Header, auch wenn dieser Header nicht in gefunden wird
Standard-Include-Verzeichnisse.

-g, - global
Fügen Sie Code zum sicheren Speichern statischer Daten in die .xs-Datei ein. Erweiterungen, die nicht funktionieren
Verwenden statischer Daten kann diese Option ignorieren.

-h, -?, --help
Drucken Sie die Verwendung, Hilfe und Version für dieses h2xs und beenden Sie.

-k, --omit-const-func
Für als "const" deklarierte Funktionsargumente lassen Sie das const-Attribut im generierten . weg
XS-Code.

-m, --gen-tied-var
Experimentell: Deklarieren Sie für jede in der/den Header-Datei(en) deklarierte Variable ein Perl
Variable mit dem gleichen Namen magisch an die C-Variable gebunden.

-n, --Name=Modulname
Gibt einen Namen für die Erweiterung an, zB -n RPC::DCE

-o, --opaque-re=regulär Ausdruck
Verwenden Sie den Datentyp "opaque" für die C-Typen, die dem regulären Ausdruck entsprechen, auch wenn
diese Typen sind "typedef"-äquivalent zu Typen aus Typemaps. Sollte nicht benutzt werden
ohne -x.

Dies kann nützlich sein, da beispielsweise Typen, die "typedef"-äquivalent zu ganzen Zahlen sind,
stellen OS-bezogene Handles dar, und man möchte vielleicht mit diesen Handles auf OO-Weise arbeiten,
wie in "$handle->do_something()". Verwenden Sie "-o". wenn du alles erledigen willst
"typedef"ed Typen als undurchsichtige Typen.

Der Typ-zu-Übereinstimmung ist weiß getüncht (mit Ausnahme von Kommas, die vorher kein Leerzeichen enthalten)
sie und mehrere "*", die keine Leerzeichen dazwischen haben).

-p, --remove-prefix=Präfix
Geben Sie ein Präfix an, das aus den Perl-Funktionsnamen entfernt werden soll, z.
-p sec_rgy_ Dies richtet den XS ein PRÄFIX Schlüsselwort und entfernt das Präfix von Funktionen
die über den Mechanismus "constant()" automatisch geladen werden.

-s, --const-subs=sub1, sub2
Erstellen Sie eine Perl-Unterroutine für die angegebenen Makros, anstatt sie automatisch mit dem zu laden
Konstante() Subroutine. Es wird davon ausgegangen, dass diese Makros einen Rückgabetyp von . haben verkohlen *,
zB -s sec_rgy_wildcard_name,sec_rgy_wildcard_sid.

-t, --Standardtyp=tippe
Geben Sie den internen Typ an, den die Konstante() Mechanismus für Makros verwendet. Der Standard
ist IV (Ganzzahl mit Vorzeichen). Derzeit alle Makros, die beim Header-Scanning gefunden wurden
Es wird davon ausgegangen, dass der Prozess diesen Typ hat. Zukünftige Versionen von "h2xs" können die
Fähigkeit, fundierte Vermutungen anzustellen.

--use-new-tests
Wann --compat-version (-b) vorhanden ist, verwenden die generierten Tests "Test::More"
statt "Test", was die Standardeinstellung für Versionen vor 5.6.2 ist. "Test::Mehr" wird
im generierten "Makefile.PL" zu PREREQ_PM hinzugefügt werden.

--benutze-alte-tests
Erzwingt die Generierung von Testcode, der das ältere Modul "Test" verwendet.

--skip-exporteur
Verwenden Sie keinen "Exporter" und/oder exportieren Sie keine Symbole.

--skip-ppport
Verwenden Sie nicht "Devel::PPPort": keine Portabilität auf ältere Versionen.

--skip-autoloader
Verwenden Sie nicht das Modul "AutoLoader"; aber behalte die Konstante() Funktion und "sub
AUTOLOAD" für Konstanten.

--skip-strict
Verwenden Sie nicht das Pragma "streng".

--Skip-Warnungen
Verwenden Sie nicht das Pragma "Warnungen".

-v, --Version=Version
Geben Sie eine Versionsnummer für diese Erweiterung an. Diese Versionsnummer wird dem . hinzugefügt
Vorlagen. Der Standardwert ist 0.01 oder 0.00_01, wenn "-B" angegeben ist. Die Version
angegeben sollte numerisch sein.

-x, --autogen-xsubs
Generieren Sie automatisch XSUBs basierend auf Funktionsdeklarationen in der Headerdatei. Die
Paket "C::Scan" sollte installiert werden. Wenn diese Option angegeben ist, wird der Name des
Header-Datei kann wie "NAME1,NAME2" aussehen. In diesem Fall wird NAME1 anstelle von verwendet
angegebene Zeichenfolge, aber XSUBs werden nur für die Deklarationen ausgegeben, die aus der Datei enthalten sind
NAME2.

Beachten Sie, dass einige Arten von Argumenten/Rückgabewerten für Funktionen zu
XSUB-Deklarationen/Typemap-Einträge, die von Hand bearbeitet werden müssen. Dies können Objekte sein, die
kann nicht von/in einen Zeiger konvertiert werden (wie "long long"), Zeiger auf Funktionen oder
Arrays. Siehe auch den Abschnitt "EINSCHRÄNKUNGEN von -x".

Beispiele:


# Standardverhalten, Erweiterung ist Rusers
h2xs rpcsvc/rusers

# Dasselbe, aber die Erweiterung ist RUSERS
h2xs -n RUSERS rpcsvc/rusers

# Die Erweiterung ist rpcsvc::rusers. Findet immer noch
h2xs rpcsvc::rusers

# Erweiterung ist ONC::RPC. Findet immer noch
h2xs -n ONC::RPC rpcsvc/rusers

# Ohne konstant() oder AUTOLOAD
h2xs -c rpcsvc/rusers

# Erstellt Vorlagen für eine Erweiterung namens RPC
h2xs -cfn RPC

# Erweiterung ist ONC::RPC.
h2xs -cfn ONC::RPC

# Extension ist ein reines Perl-Modul ohne XS-Code.
h2xs -X Mein::Modul

# Erweiterung ist Lib::Foo, die zumindest mit Perl5.005_03 funktioniert.
# Konstanten werden für alle #defines und enums erstellt, die h2xs finden kann
# in foo.h.
h2xs -b 5.5.3 -n Lib::Foo foo.h

# Erweiterung ist Lib::Foo, die zumindest mit Perl5.005_03 funktioniert.
# Konstanten werden für alle #defines erstellt, aber nur für Aufzählungen
# deren Namen nicht mit 'bar_' beginnen.
h2xs -b 5.5.3 -e '^bar_' -n Lib::Foo foo.h

# Makefile.PL sucht nach Bibliothek -lrpc in
# zusätzliches Verzeichnis /opt/net/lib
h2xs rpcsvc/rusers -L/opt/net/lib -lrpc

# Erweiterung ist DCE::rgynbase
# Präfix "sec_rgy_" wird aus Perl-Funktionsnamen entfernt
h2xs -n DCE::rgynbase -p sec_rgy_dce/rgynbase

# Erweiterung ist DCE::rgynbase
# Präfix "sec_rgy_" wird aus Perl-Funktionsnamen entfernt
# Unterprogramme werden für sec_rgy_wildcard_name erstellt und
# sec_rgy_wildcard_sid
h2xs -n DCE::rgynbase -p sec_rgy_ \
-s sec_rgy_wildcard_name,sec_rgy_wildcard_sid dce/rgynbase

# Machen Sie XS ohne Defines in perl.h, aber mit Funktionsdeklarationen
# sichtbar von perl.h. Der Name der Erweiterung ist perl1.
# Beim Scannen von perl.h definieren Sie -DEXT=extern -DdEXT= -DINIT(x)=
# Zusätzliche Backslashes unten, weil die Zeichenfolge an die Shell übergeben wird.
# Beachten Sie, dass ein Verzeichnis mit Perl-Header-Dateien
# wird automatisch hinzugefügt, um den Pfad einzuschließen.
h2xs -xAn perl1 -F "-DEXT=extern -DdEXT= -DINIT\(x\)=" perl.h

# Dasselbe mit der Funktionsdeklaration in proto.h wie aus perl.h sichtbar.
h2xs -xAn perl2 perl.h,proto.h

# Gleich, aber nur Funktionen auswählen, die mit /^av_/ übereinstimmen
h2xs -M '^av_' -xAn perl2 perl.h,proto.h

# Gleich, aber behandeln SV* usw. als "undurchsichtige" Typen
h2xs -o '^[S]V \*$' -M '^av_' -xAn perl2 perl.h,proto.h

Erweiterung basierend on .h und .c Dateien
Angenommen, Sie haben einige C-Dateien, die einige Funktionen implementieren, und die entsprechenden
Header-Dateien. So erstellen Sie eine Erweiterung, die diese Funktionalität zugänglich macht in
Perle? Das folgende Beispiel geht davon aus, dass die Header-Dateien interface_simple.h und
interface_hairy.h, und das Perl-Modul soll als "Ext::Ension" benannt werden. Wenn Sie brauchen
einige Präprozessordirektiven und/oder das Verlinken mit externen Bibliotheken, siehe die Flags "-F",
"-L" und "-l" in "OPTIONEN".

Suchen Sie den Verzeichnisnamen
Beginnen Sie mit einem Dummy-Lauf von h2xs:

h2xs -Afn Ext::Ension

Der einzige Zweck dieses Schritts besteht darin, die benötigten Verzeichnisse zu erstellen und Sie darüber zu informieren
die Namen dieser Verzeichnisse. Aus der Ausgabe können Sie sehen, dass das Verzeichnis für
die erweiterung ist Verlängerung.

C-Dateien kopieren
Kopieren Sie Ihre Header-Dateien und C-Dateien in dieses Verzeichnis Verlängerung.

Erstellen Sie die Erweiterung
Führen Sie h2xs aus und überschreiben Sie ältere automatisch generierte Dateien:

h2xs -Oxan Ext::Ension interface_simple.h interface_hairy.h

h2xs sucht nach Header-Dateien nachdem in das Erweiterungsverzeichnis wechseln, damit es findet
Ihre Header-Dateien OK.

Archivieren und testen
Wie immer, lauf

cd Erweiterung/Erweiterung
perl-Makefile.PL
machen dist
um
Test machen

Hinweise
Es ist wichtig, so früh wie möglich "make dist" zu machen. So kannst du ganz einfach
fusionieren(1) Ihre Änderungen an automatisch generierten Dateien, wenn Sie sich entscheiden, Ihre ".h"-Dateien zu bearbeiten und
h2xs erneut ausführen.

Vergessen Sie nicht, die Dokumentation im generierten .pm Datei.

Betrachten Sie die automatisch generierten Dateien nur als Skelette, Sie können bessere Schnittstellen erfinden
als das, was h2xs erraten könnte.

Betrachten Sie diesen Abschnitt nur als Richtlinie, einige andere Optionen von h2xs könnten besser geeignet sein
Deine Bedürfnisse.


Es werden keine Umgebungsvariablen verwendet.

Verwenden Sie h2xs online mit den onworks.net-Diensten


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad