EngelsFransSpaans

Ad


OnWorks-favicon

h2xs - Online in de cloud

Voer h2xs uit in de gratis hostingprovider van OnWorks via Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

Dit is de opdracht h2xs die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

PROGRAMMA:

NAAM


h2xs - converteer .h C-headerbestanden naar Perl-extensies

KORTE INHOUD


h2xs [OPTIES ...] [headerfile ... [extra_bibliotheken]]

h2xs -h|-?|--help

PRODUCTBESCHRIJVING


h2xs bouwt een Perl-extensie van C-headerbestanden. De extensie zal functies bevatten
die kan worden gebruikt om de waarde op te halen van elke #define-instructie die in de C-header stond
bestanden.

De module naam wordt gebruikt voor de naam van de extensie. Als modulenaam dat niet is
opgegeven, wordt de naam van het eerste headerbestand gebruikt, met het eerste teken
gekapitaliseerd.

Als de extensie mogelijk extra bibliotheken nodig heeft, moeten deze hier worden opgenomen. De verlenging
Makefile.PL zal ervoor zorgen dat wordt gecontroleerd of de bibliotheken daadwerkelijk bestaan ​​en hoe ze bestaan
moet worden geladen. De extra bibliotheken moeten worden opgegeven in de vorm -lm -lposix, enz.
net als op de cc-opdrachtregel. Standaard zoekt de Makefile.PL door de
bibliotheekpad bepaald door Configure. Dat pad kan worden uitgebreid door argumenten op te nemen
van het formulier -L/een andere/bibliotheek/pad in het extra-bibliotheken-argument.

Ondanks zijn naam, h2xs kan ook worden gebruikt om een ​​skelet-pure Perl-module te maken. Zie de
-X optie.

OPTIES


-A, --weglaten-autoload
Laat alle autoload-faciliteiten weg. Dit is hetzelfde als -c maar verwijdert ook de
"use AutoLoader"-instructie uit het .pm-bestand.

-B, --beta versie
Gebruik een versienummer in alfa-/bètastijl. Zorgt ervoor dat het versienummer "0.00_01" is, tenzij
-v is gespecificeerd.

-C, --weglaten-wijzigingen
Laat de creatie van de achterwege Wijzigingen -bestand en voegt een HISTORY-sectie toe aan het POD-sjabloon.

-F, --cpp-vlaggen=vlaggen toevoegen
Extra vlaggen om op te geven voor de C-preprocessor bij het scannen van de koptekst op functie
verklaringen. Schrijft deze opties in het gegenereerde Makefile.PL ook.

-M, --func-masker=regelmatig uitdrukking
selecteert functies/macro's om te verwerken.

-O, --overschrijven-ok
Hiermee kan een reeds bestaande extensiemap worden overschreven.

-P, --weglaten-pod
Laat de automatisch gegenereerde stub POD-sectie weg.

-X, --weglaten-XS
Laat het XS-gedeelte weg. Wordt gebruikt om een ​​skelet-pure Perl-module te genereren. "-c" en "-f" zijn
impliciet ingeschakeld.

-a, --gen-accessoires
Genereer een accessor-methode voor elk element van structs en unions. De gegenereerde
methoden zijn genoemd naar de elementnaam; retourneert de huidige waarde van de
element indien aangeroepen zonder aanvullende argumenten; en zal het element instellen op de
opgegeven waarde (en retourneer de nieuwe waarde) indien aangeroepen met een extra argument.
Ingebedde structuren en vakbonden worden geretourneerd als een aanwijzer in plaats van als volledig
structuur, om geketende oproepen te vergemakkelijken.

Deze methoden zijn allemaal van toepassing op het Ptr-type voor de structuur; bovendien twee methoden
zijn geconstrueerd voor het structuurtype zelf, "_to_ptr" dat een Ptr-type retourneert
verwijzend naar dezelfde structuur, en een "nieuwe" methode om een ​​nieuwe te construeren en terug te geven
structuur, geïnitialiseerd op nullen.

-b, --compat-versie=versie
Genereert een .pm-bestand dat achterwaarts compatibel is met de opgegeven perl-versie.

Voor versies < 5.6.0 zijn de wijzigingen.
- geen gebruik van 'our' (gebruikt in plaats daarvan 'use vars')
- geen 'gebruikswaarschuwingen'

Een compatibiliteitsversie specificeren die hoger is dan de versie van perl die u gebruikt
run h2xs heeft geen effect. Indien niet gespecificeerd zal h2xs standaard compatibel zijn met
de versie van perl die u gebruikt om h2xs uit te voeren.

-c, --weglaten-constante
Laat "constant()" weg uit het .xs-bestand en de overeenkomstige gespecialiseerde "AUTOLOAD" uit het
.pm-bestand.

-d, --debuggen
Foutopsporingsberichten inschakelen.

-e, --weglaten-opsommingen=[regelmatig uitdrukking]
If regelmatig uitdrukking niet gegeven is, sla dan alle constanten over die gedefinieerd zijn in een C
opsomming. Sla anders alleen die constanten over die zijn gedefinieerd in een enum waarvan
naam komt overeen regelmatig uitdrukking.

Sinds regelmatig uitdrukking is optioneel, zorg ervoor dat deze schakelaar gevolgd wordt door at
minstens één andere schakelaar als u weglaat regelmatig uitdrukking en heb een aantal hangende argumenten
zoals header-bestandsnamen. Dit is oke:

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

Dit is niet oké:

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

In het laatste geval wordt foo.h genomen als regelmatig uitdrukking.

-f, --kracht
Hiermee kan een extensie worden gemaakt voor een koptekst, zelfs als die koptekst niet wordt gevonden
standaard inclusief mappen.

-g, --globaal
Voeg code toe voor het veilig opslaan van statische gegevens in het .xs-bestand. Extensies die nee doen
gebruik maken van statische gegevens kan deze optie negeren.

-h, -?, --help
Druk het gebruik, de hulp en de versie voor deze h2xs af en sluit af.

-k, --weglaten-const-func
Voor functieargumenten die zijn gedeclareerd als "const", laat u het kenmerk const weg in de gegenereerde
XS-code.

-m, --gen-gebonden-var
Experimenteel: voor elke variabele gedeclareerd in de header-file(s), declareer een perl
variabele met dezelfde naam op magische wijze gekoppeld aan de variabele C.

-n, --naam=module naam
Specificeert een naam die moet worden gebruikt voor de extensie, bijvoorbeeld -n RPC::DCE

-o, --ondoorzichtig-re=regelmatig uitdrukking
Gebruik het gegevenstype "ondoorzichtig" voor de C-typen die overeenkomen met de reguliere expressie, zelfs als
deze typen zijn "typedef" -gelijk aan typen uit typemaps. Mag niet worden gebruikt
zonder -x.

Dit kan nuttig zijn omdat bijvoorbeeld typen die "typedef"-equivalent zijn aan gehele getallen, dat wel kunnen
vertegenwoordigen OS-gerelateerde handvatten, en misschien wil je met deze handvatten op OO-manier werken,
zoals in "$handle->do_something()". Gebruik "-o." als je alles wilt regelen
"typedef"-typen als ondoorzichtige typen.

Het overeenkomende type is witgekalkt (behalve komma's, die daarvoor geen witruimte hebben
hen, en meerdere "*" die geen witruimte ertussen hebben).

-p, --remove-voorvoegsel=voorvoegsel
Geef een voorvoegsel op dat moet worden verwijderd uit de Perl-functienamen, bijvoorbeeld
-p sec_rgy_ Dit stelt de XS in VOORVOEGSEL trefwoord en verwijdert het voorvoegsel van functies
die automatisch worden geladen via het "constant()"-mechanisme.

-s, --const-subs=sub1, sub2
Maak een perl-subroutine voor de opgegeven macro's in plaats van automatisch te laden met de
constante() subroutine. Aangenomen wordt dat deze macro's een retourtype hebben van verkolen *,
bijv. -s sec_rgy_wildcard_name, sec_rgy_wildcard_sid.

-t, --standaard-type= type dan:
Geef het interne type op dat het constante() mechanisme gebruikt voor macro's. De standaard
is IV (getekend geheel getal). Momenteel zijn alle macro's gevonden tijdens het scannen van de koptekst
proces wordt verondersteld dit type te hebben. Toekomstige versies van "h2xs" kunnen de
vermogen om gefundeerde gissingen te maken.

--gebruik-nieuwe-tests
. --compat-versie (-b) aanwezig is, zullen de gegenereerde tests "Test::Meer" gebruiken
in plaats van "Test", wat de standaard is voor versies vóór 5.6.2. "Test::Meer" wel
worden toegevoegd aan PREREQ_PM in de gegenereerde "Makefile.PL".

--gebruik-oude-testen
Zal het genereren van testcode forceren die de oudere "Test" -module gebruikt.

--overslaan-exporteur
Gebruik geen "Exporter" en/of exporteer geen enkel symbool.

--skip-ppport
Gebruik "Devel::PPPort" niet: geen overdraagbaarheid naar oudere versie.

--overslaan-autoloader
Maak geen gebruik van de module "AutoLoader"; maar houd de constante() functie en "sub
AUTOLOAD" voor constanten.

--overslaan-strikt
Gebruik niet het pragma "strikt".

--overslaan-waarschuwingen
Gebruik niet de pragma "waarschuwingen".

-v, --versie=versie
Geef een versienummer op voor deze extensie. Dit versienummer wordt toegevoegd aan het
Sjablonen. De standaardwaarde is 0.01 of 0.00_01 als "-B" is opgegeven. De versie
opgegeven moet numeriek zijn.

-x, --autogen-xsubs
Genereer automatisch XSUB's op basis van functiedeclaraties in het headerbestand. De
pakket "C::Scan" moet worden geïnstalleerd. Als deze optie is opgegeven, wordt de naam van het
header-bestand kan er uitzien als "NAME1,NAME2". In dit geval wordt NAME1 gebruikt in plaats van de
opgegeven tekenreeks, maar XSUB's worden alleen verzonden voor de declaraties die zijn opgenomen in het bestand
NAAM2.

Merk op dat sommige soorten argumenten/retourwaarden voor functies kunnen resulteren in
XSUB-declaraties/typemap-items die met de hand moeten worden bewerkt. Dit kunnen objecten zijn die
kan niet worden geconverteerd van/naar een pointer (zoals "long long"), pointers naar functies of
arrays. Zie ook het gedeelte over "BEPERKINGEN van -x".

Voorbeelden


# Standaardgedrag, extensie is Rusers
h2xs rpcsvc/gebruikers

# Hetzelfde, maar de extensie is RUSERS
h2xs -n RUSERS rpcsvc/gebruikers

# Extensie is rpcsvc::rusers. Nog steeds vindt
h2xs rpcsvc::gebruikers

# Extensie is ONC::RPC. Nog steeds vindt
h2xs -n ONC::RPC rpcsvc/gebruikers

# Zonder constante() of AUTOLOAD
h2xs -c rpcsvc/gebruikers

# Maakt sjablonen voor een extensie met de naam RPC
h2xs -cfn RPC

# Extensie is ONC::RPC.
h2xs -cfn ONC::RPC

# Extensie is een pure Perl-module zonder XS-code.
h2xs -X Mijn::Module

# Extensie is Lib::Foo die in ieder geval werkt met Perl5.005_03.
# Er worden constanten gemaakt voor alle #defines en enums die h2xs kan vinden
# in foo.h.
h2xs -b 5.5.3 -n Lib::Foo foo.h

# Extensie is Lib::Foo die in ieder geval werkt met Perl5.005_03.
# Er worden constanten gemaakt voor alle #defines, maar alleen voor opsommingen
# waarvan de naam niet begint met 'bar_'.
h2xs -b 5.5.3 -e '^bar_' -n Lib::Foo foo.h

# Makefile.PL zoekt naar bibliotheek -lrpc in
# extra directory /opt/net/lib
h2xs rpcsvc/users -L/opt/net/lib -lrpc

# Extensie is DCE::rgynbase
# prefix "sec_rgy_" is verwijderd uit perl-functienamen
h2xs -n DCE::rgynbase -p sec_rgy_ dce/rgynbase

# Extensie is DCE::rgynbase
# prefix "sec_rgy_" is verwijderd uit perl-functienamen
Er zijn # subroutines gemaakt voor sec_rgy_wildcard_name en
# sec_rgy_wildcard_sid
h2xs -n DCE::rgynbase -p sec_rgy_ \
-s sec_rgy_wildcard_naam,sec_rgy_wildcard_sid dce/rgynbase

# Maak XS zonder definities in perl.h, maar met functiedeclaraties
# zichtbaar vanaf perl.h. De naam van de extensie is perl1.
# Definieer bij het scannen van perl.h -DEXT=extern -DdEXT= -DINIT(x)=
# Extra backslashes hieronder omdat de string wordt doorgegeven aan de shell.
# Merk op dat een map met perl-headerbestanden dat wel zou doen
# worden automatisch toegevoegd om het pad op te nemen.
h2xs -xAn perl1 -F "-DEXT=extern -DdEXT= -DINIT\(x\)=" perl.h

# Hetzelfde met functiedeclaratie in proto.h zoals zichtbaar vanaf perl.h.
h2xs -xAn perl2 perl.h,proto.h

# Hetzelfde, maar selecteer alleen functies die overeenkomen met /^av_/
h2xs -M '^av_' -xAn perl2 perl.h,proto.h

# Hetzelfde, maar behandel SV* enz. als "ondoorzichtige" typen
h2xs -o '^[S]V \*$' -M '^av_' -xAn perl2 perl.h,proto.h

Verlenging gebaseerde on .h en .c bestanden
Stel dat u enkele C-bestanden hebt die een bepaalde functionaliteit implementeren, en de bijbehorende
header-bestanden. Een extensie maken die deze functionaliteit toegankelijk maakt in
Perl? In het onderstaande voorbeeld wordt ervan uitgegaan dat de headerbestanden interface_eenvoudig.h en
interface_hairy.h, en u wilt dat de perl-module de naam "Ext::Ension" krijgt. Als je nodig hebt
enkele preprocessor-richtlijnen en/of koppeling met externe bibliotheken, zie de vlaggen "-F",
"-L" en "-l" in "OPTIES".

Zoek de mapnaam
Begin met een dummy run van h2xs:

h2xs -Afn Ext::Ension

Het enige doel van deze stap is om de benodigde mappen te maken en u dit te laten weten
de namen van deze mappen. Uit de uitvoer kun je zien dat de map voor
de extensie is Verlenging.

Kopieer C-bestanden
Kopieer uw header-bestanden en C-bestanden naar deze map Verlenging.

Maak de extensie
Voer h2xs uit en overschrijf oudere automatisch gegenereerde bestanden:

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

h2xs zoekt naar header-bestanden na veranderen naar de extensiemap, zodat het zal vinden
uw header-bestanden OK.

Archiveren en testen
Zoals gewoonlijk, rennen

cd Ext/Ensie
perl Makefile.PL
maak dist
maken
test maken

Hints
Het is belangrijk om "make dist" zo vroeg mogelijk te doen. Zo kun je gemakkelijk
samensmelten(1) uw wijzigingen in automatisch gegenereerde bestanden als u besluit uw ".h"-bestanden te bewerken en
herhaal h2xs.

Vergeet niet de documentatie in het gegenereerde .p.m bestand.

Beschouw de automatisch gegenereerde bestanden alleen als skeletten, u kunt betere interfaces bedenken
dan wat h2xs kon raden.

Beschouw deze sectie alleen als een richtlijn, sommige andere opties van h2xs kunnen beter geschikt zijn
je behoeften.

MILIEU


Er worden geen omgevingsvariabelen gebruikt.

Gebruik h2xs online met behulp van onworks.net-services


Gratis servers en werkstations

Windows- en Linux-apps downloaden

Linux-commando's

Ad