EnglezăFrancezăSpaniolă

Rulați servere | Ubuntu > | Fedora > |


Favicon OnWorks

h2xs - Online în cloud

Rulați h2xs în furnizorul de găzduire gratuit OnWorks prin Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

Aceasta este comanda h2xs care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

PROGRAM:

NUME


h2xs - convertiți fișierele antet .h C în extensii Perl

REZUMAT


h2xs [OPŢIUNI ...] [fișier antet ... [biblioteci_extra]]

h2xs -h|-?|--Ajutor

DESCRIERE


h2xs construiește o extensie Perl din fișierele antet C. Extensia va include funcții
care poate fi folosit pentru a prelua valoarea oricărei instrucțiuni #define care a fost în antetul C
fișiere.

nume_modul va fi folosit pentru numele extensiei. Dacă module_name nu este
furnizat, atunci se va folosi numele primului fișier antet, cu primul caracter
cu majuscule.

Dacă extensia ar putea avea nevoie de biblioteci suplimentare, acestea ar trebui incluse aici. Extensia
Makefile.PL se va ocupa de a verifica dacă bibliotecile există efectiv și cum acestea
ar trebui să fie încărcat. Bibliotecile suplimentare trebuie specificate sub forma -lm -lposix, etc.
la fel ca pe linia de comandă cc. În mod implicit, Makefile.PL va căuta prin
calea bibliotecii determinată de Configurare. Această cale poate fi mărită prin includerea de argumente
a formei -L/altul/bibliotecă/cale în argumentul extra-biblioteci.

În ciuda numelui său, h2xs poate fi folosit și pentru a crea un modul Perl pur schelet. Vezi
-X opțiune.

OPŢIUNI


-A, --omite-încărcare automată
Omiteți toate facilitățile de încărcare automată. Aceasta este la fel ca -c dar elimină și
declarația „utilizați AutoLoader” din fișierul .pm.

-B, --versiune beta
Utilizați un număr de versiune în stil alfa/beta. Determină ca numărul versiunii să fie „0.00_01”, cu excepția cazului în care
-v este specificat.

-C, --omite-modificări
Omite crearea Modificări fișier și adaugă o secțiune HISTORY șablonului POD.

-F, --cpp-steaguri=adaugă steaguri
Indicatori suplimentare pentru a specifica preprocesorului C la scanarea antetului pentru funcție
declarații. Scrie aceste opțiuni în generat Makefile.PL prea.

-M, --func-mască=regulat expresie
selectează funcțiile/macro-urile de procesat.

-O, --suprascrie-ok
Permite suprascrierea unui director de extensii preexistent.

-P, --omite-pod
Omiteți secțiunea stub POD generată automat.

-X, --omite-XS
Omiteți porțiunea XS. Folosit pentru a genera un modul Perl pur schelet. „-c” și „-f” sunt
activată implicit.

-a, --gen-accessori
Generați o metodă de accesare pentru fiecare element de structuri și uniuni. Cel generat
metodele sunt denumite după numele elementului; va returna valoarea curentă a
element dacă este apelat fără argumente suplimentare; și va seta elementul la
valoarea furnizată (și returnează noua valoare) dacă este apelată cu un argument suplimentar.
Structurile și uniunile încorporate sunt returnate mai degrabă ca un pointer decât ca complete
structura, pentru a facilita apelurile în lanț.

Toate aceste metode se aplică tipului Ptr pentru structură; în plus două metode
sunt construite pentru tipul de structură în sine, „_to_ptr” care returnează un tip Ptr
indicând aceeași structură și o metodă „nouă” pentru a construi și a returna un nou
structura, inițializată la zerouri.

-b, --compat-version=versiune
Generează un fișier .pm care este compatibil cu versiunea perl specificată.

Pentru versiunile < 5.6.0, modificările sunt.
- nu se folosește „al nostru” (folosește „utilizați vars” în schimb)
- fără „avertismente de utilizare”

Specificarea unei versiuni de compatibilitate mai mare decât versiunea de perl pentru care utilizați
rulați h2xs nu va avea niciun efect. Dacă h2xs nespecificat va fi compatibil implicit cu
versiunea de perl pe care o utilizați pentru a rula h2xs.

-c, --omite-constant
Omiteți „constant()” din fișierul .xs și „AUTOLOAD” specializat corespunzător din fișierul
fișier .pm.

-d, --depanare
Activați mesajele de depanare.

-e, --omite-enumerii=[regulat expresie]
If regulat expresie nu este dat, săriți peste toate constantele care sunt definite într-un C
enumerare. În caz contrar, omiteți numai acele constante care sunt definite într-o enumerare a căror
nume se potrivesc regulat expresie.

Întrucât regulat expresie este opțional, asigurați-vă că acest comutator este urmat de la
cel puțin un alt comutator dacă omiteți regulat expresie și au câteva argumente în așteptare
cum ar fi numele de fișiere antet. Asta e ok:

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

Asta nu este ok:

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

În cel din urmă, foo.h este luat ca regulat expresie.

-f, --forta
Permite crearea unei extensii pentru un antet chiar dacă acel antet nu este găsit în
standard includ directoare.

-g, --global
Includeți codul pentru stocarea în siguranță a datelor statice în fișierul .xs. Extensii care nu
Utilizarea datelor statice poate ignora această opțiune.

-h, -?, --Ajutor
Tipăriți utilizarea, ajutorul și versiunea pentru acest h2xs și ieșiți.

-k, --omit-const-func
Pentru argumentele funcției declarate ca „const”, omiteți atributul const din generat
cod XS.

-m, --gen-tied-var
Experimental: pentru fiecare variabilă declarată în fișierul(ele) antet, declarați un perl
variabilă cu același nume legată magic de variabila C.

-n, --Nume=nume_modul
Specifică un nume de utilizat pentru extensie, de exemplu, -n RPC::DCE

-o, --opac-re=regulat expresie
Utilizați tipul de date „opac” pentru tipurile C potrivite cu expresia regulată, chiar dacă
aceste tipuri sunt „typedef” echivalente cu tipurile din hărți de tip. Nu trebuie folosit
fără -x.

Acest lucru poate fi util deoarece, de exemplu, tipurile care sunt „typedef” echivalente cu numere întregi pot
reprezintă mânerele legate de sistemul de operare și s-ar putea să doriți să lucrați cu aceste mânere în mod OO,
ca în „$handle->do_something()”. Folosiți „-o”. dacă vrei să te ocupi de toate
tipurile „typedef”ed ca tipuri opace.

Tipul de potrivire este văruit (cu excepția virgulelor, care nu au spațiu alb înainte
ele și multiple „*” care nu au spații albe între ele).

-p, --elimină-prefixul=prefix
Specificați un prefix care ar trebui eliminat din numele funcțiilor Perl, de exemplu,
-p sec_rgy_ Aceasta setează XS PREFIX cuvânt cheie și elimină prefixul din funcții
care sunt încărcate automat prin mecanismul „constant()”.

-s, --const-subs=sub1,sub2
Creați o subrutină perl pentru macrocomenzile specificate, mai degrabă decât încărcarea automată cu
constant() subrutină. Se presupune că aceste macrocomenzi au un tip de returnare de car de război *,
de exemplu, -s sec_rgy_wildcard_name,sec_rgy_wildcard_sid.

-t, --default-type=tip
Specificați tipul intern pe care constant() mecanismul se utilizează pentru macro-uri. Implicit
este IV (întreg cu semn). În prezent, toate macrocomenzile găsite în timpul scanării antetului
se va presupune că procesul are acest tip. Versiunile viitoare de „h2xs” pot câștiga
capacitatea de a face presupuneri educate.

--utilizați-noi-teste
Cand --compat-version (-b) este prezent, testele generate vor folosi „Test::More”
mai degrabă decât „Test”, care este implicit pentru versiunile anterioare 5.6.2. „Test::More” va
să fie adăugat la PREREQ_PM în „Makefile.PL” generat.

--utilizați-vechi-teste
Va forța generarea de cod de testare care utilizează modulul „Test” mai vechi.

--skip-exportator
Nu utilizați „Exportator” și/sau exportați niciun simbol.

--skip-ppport
Nu utilizați „Devel::PPPort”: fără portabilitate la versiunea mai veche.

--skip-autoloader
Nu utilizați modulul „AutoLoader”; dar păstrează constant() funcția și „sub
AUTOLOAD" pentru constante.

--skip-strict
Nu folosi pragma „strict”.

--omite-avertismente
Nu utilizați pragma „avertismente”.

-v, --versiune=versiune
Specificați un număr de versiune pentru această extensie. Acest număr de versiune este adăugat la
șabloane. Valoarea implicită este 0.01 sau 0.00_01 dacă este specificat „-B”. Versiunea
specificat trebuie să fie numeric.

-x, --autogen-xsubs
Generați automat XSUB-uri pe baza declarațiilor de funcție din fișierul antet. The
pachetul „C::Scan” ar trebui să fie instalat. Dacă este specificată această opțiune, numele
fișierul antet poate arăta ca „NAME1,NAME2”. În acest caz, NAME1 este folosit în loc de
șir specificat, dar XSUB-urile sunt emise numai pentru declarațiile incluse din fișier
NUME2.

Rețineți că unele tipuri de argumente/valori de returnare pentru funcții pot avea ca rezultat
XSUB-declarații/typemap-intrări care necesită editare manuală. Acestea pot fi obiecte care
nu pot fi convertite de la/la un pointer (cum ar fi „lung lung”), pointeri la funcții sau
matrice. Consultați și secțiunea „LIMITĂRI ale -x".

EXEMPLE


# Comportament implicit, extensia este Rusers
h2xs rpcsvc/rusers

# La fel, dar extensia este RUSERS
h2xs -n RUSERS rpcsvc/rusers

# Extensia este rpcsvc::rusers. Inca gaseste
h2xs rpcsvc::rusers

# Extensia este ONC::RPC. Inca gaseste
h2xs -n ONC::RPC rpcsvc/rusers

# Fără constant() sau AUTOLOAD
h2xs -c rpcsvc/rusers

# Creează șabloane pentru o extensie numită RPC
h2xs -cfn RPC

# Extensia este ONC::RPC.
h2xs -cfn ONC::RPC

# Extensia este un modul pur Perl, fără cod XS.
h2xs -X Modulul meu::

# Extensia este Lib::Foo care funcționează cel puțin cu Perl5.005_03.
# Sunt create constante pentru toate #definirile și enumerarile pe care le poate găsi h2xs
# în foo.h.
h2xs -b 5.5.3 -n Lib::Foo foo.h

# Extensia este Lib::Foo care funcționează cel puțin cu Perl5.005_03.
# Constantele sunt create pentru toate #definirile, dar numai pentru enumerari
# ale căror nume nu încep cu „bar_”.
h2xs -b 5.5.3 -e '^bar_' -n Lib::Foo foo.h

# Makefile.PL va căuta biblioteca -lrpc în
# director suplimentar /opt/net/lib
h2xs rpcsvc/rusers -L/opt/net/lib -lrpc

# Extensia este DCE::rgynbase
# prefixul „sec_rgy_” este eliminat din numele funcțiilor perl
h2xs -n DCE::rgynbase -p sec_rgy_ dce/rgynbase

# Extensia este DCE::rgynbase
# prefixul „sec_rgy_” este eliminat din numele funcțiilor perl
# de subrutine sunt create pentru sec_rgy_wildcard_name și
# sec_rgy_wildcard_sid
h2xs -n DCE::rgynbase -p sec_rgy_ \
-s sec_rgy_wildcard_name,sec_rgy_wildcard_sid dce/rgynbase

# Faceți XS fără definiții în perl.h, dar cu declarații de funcție
# vizibil din perl.h. Numele extensiei este perl1.
# Când scanați perl.h, definiți -DEXT=extern -DdEXT= -DINIT(x)=
# Bare oblice inverse suplimentare de mai jos, deoarece șirul este transmis la shell.
# Rețineți că un director cu fișiere de antet perl ar fi
# să fie adăugat automat pentru a include calea.
h2xs -xAn perl1 -F "-DEXT=extern -DdEXT= -DINIT\(x\)=" perl.h

# Același lucru cu declarația funcției în proto.h, așa cum este vizibilă din perl.h.
h2xs -xAn perl2 perl.h,proto.h

# Același, dar selectați numai funcțiile care se potrivesc cu /^av_/
h2xs -M '^av_' -xAn perl2 perl.h,proto.h

# La fel, dar tratați SV* etc ca tipuri „opace”.
h2xs -o '^[S]V \*$' -M '^av_' -xAn perl2 perl.h,proto.h

Extensie bazat on .h și .c fișiere
Să presupunem că aveți niște fișiere C care implementează anumite funcționalități și cele corespunzătoare
fișiere antet. Cum să creați o extensie care face această funcționalitate accesibilă în
Perl? Exemplul de mai jos presupune că fișierele antet sunt interfață_simple.h și
interface_hairy.h, și doriți ca modulul perl să fie numit „Ext::Ension”. Dacă aveți nevoie
unele directive de preprocesor și/sau legături cu biblioteci externe, vezi steagurile „-F”,
„-L” și „-l” în „OPȚIUNI”.

Găsiți numele directorului
Începeți cu o serie inactivă de h2xs:

h2xs -Afn Ext::Ension

Singurul scop al acestui pas este de a crea directoarele necesare și de a vă anunța
numele acestor directoare. Din rezultat puteți vedea că directorul pentru
extensia este Extensie.

Copiați fișierele C
Copiați fișierele antet și fișierele C în acest director Extensie.

Creați extensia
Rulați h2xs, suprascriind fișierele mai vechi generate automat:

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

h2xs caută fișiere antet după schimbarea în directorul de extensii, așa că va găsi
fișierele de antet sunt OK.

Arhivați și testați
Ca de obicei, fugi

cd Ext/Ension
perl Makefile.PL
face dist
face
face test

sugestii
Este important să faci „make dist” cât mai devreme posibil. În felul acesta poți cu ușurință
îmbina(1) modificările dvs. la fișierele generate automat dacă decideți să vă editați fișierele „.h” și
reluați h2xs.

Nu uitați să editați documentația în formatul generat .p.m fișier.

Considerați fișierele autogenerate doar ca schelete, puteți inventa interfețe mai bune
decât ceea ce h2xs ar putea ghici.

Luați în considerare această secțiune doar ca un ghid, unele alte opțiuni ale h2xs se potrivesc mai bine
nevoile tale.

MEDIUL


Nu sunt utilizate variabile de mediu.

Utilizați h2xs online folosind serviciile onworks.net


Ad


Ad