אנגליתצרפתיתספרדי

Ad


סמל OnWorks

h2xs - מקוון בענן

הפעל h2xs בספק אירוח חינמי של OnWorks על אובונטו אונליין, פדורה אונליין, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS

זוהי הפקודה h2xs שניתן להפעיל בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו, כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS

תָכְנִית:

שֵׁם


h2xs - המרת קובצי כותרות .h C להרחבות Perl

תַקצִיר


h2xs [אפשרויות ...] [קובץ header ... [ספריות_נוספות]]

h2xs -h|-?|- עזרה

תיאור


h2xs בונה סיומת Perl מקבצי כותרת C. ההרחבה תכלול פונקציות
אשר ניתן להשתמש בו כדי לאחזר את הערך של כל משפט #define שהיה בכותרת C
קבצים.

אל האני מודול_שם ישמש עבור שם ההרחבה. אם module_name אינו
מסופק אז ישמש השם של קובץ הכותרת הראשון, עם התו הראשון
מהוונת.

אם התוסף עשוי להזדקק לספריות נוספות, יש לכלול אותן כאן. ההרחבה
Makefile.PL תדאג לבדוק האם הספריות אכן קיימות וכיצד הן
צריך להיות טעון. יש לציין את הספריות הנוספות בצורה -lm -lposix וכו',
בדיוק כמו בשורת הפקודה cc. כברירת מחדל, ה-Makefile.PL יחפש ב-
נתיב הספרייה שנקבע על ידי Configure. ניתן להגדיל את הנתיב הזה על ידי הכללת ארגומנטים
של הטופס -L/אחר/ספרייה/נתיב בטיעון חוץ-ספריות.

למרות שמו, h2xs עשוי לשמש גם ליצירת מודול פרל טהור שלד. ראה את
-X אוֹפְּצִיָה.

אפשרויות


-A, --שמיט-טעינה אוטומטית
השמיט את כל מתקני הטעינה האוטומטית. זה אותו דבר כמו -c אלא גם מסיר את
הצהרת "השתמש ב-AutoLoader" מקובץ ה-.pm.

-B, --גירסת בטא
השתמש במספר גרסה בסגנון אלפא/ביתא. גורם למספר הגרסה להיות "0.00_01", אלא אם כן
-v מוגדר.

-C, --השמטת שינויים
משמיט את יצירת ה שינויים קובץ, ומוסיף קטע HISTORY לתבנית ה-POD.

-F, --cpp-flags=addflags
דגלים נוספים לציון למעבד קדם C בעת סריקת הכותרת לפונקציה
הצהרות. כותב את האפשרויות האלה בקובץ שנוצר Makefile.PL מדי.

-M, ---func-mask=רגיל ביטוי
בוחר פונקציות/מאקרו לעיבוד.

-O, --החלף-בסדר
מאפשר החלפת ספריית הרחבות קיימת מראש.

-P, --השמיט-תרמיל
השמט את קטע ה-Stub POD שנוצר אוטומטית.

-X, --שמיט-XS
השמיט את החלק XS. משמש ליצירת מודול פרל טהור שלד. "-c" ו-"-f" הם
מופעל באופן מרומז.

-a, --gen-accesss
צור שיטת עזר לכל אלמנט של מבנים ואיגודים. הנוצר
שיטות נקראות על שם האלמנט; יחזיר את הערך הנוכחי של ה
רכיב אם נקרא ללא ארגומנטים נוספים; ויגדיר את האלמנט ל-
הערך שסופק (והחזר את הערך החדש) אם נקרא עם ארגומנט נוסף.
מבנים ואיגודים משובצים מוחזרים כמצביע ולא כשלם
מבנה, כדי להקל על שיחות משורשרות.

שיטות אלה חלות כולן על סוג Ptr עבור המבנה; בנוסף שתי שיטות
בנויים עבור סוג המבנה עצמו, "_to_ptr" שמחזיר סוג Ptr
מצביע על אותו מבנה, ושיטה "חדשה" לבנות ולהחזיר חדש
מבנה, מאותחל לאפסים.

-b, --גרסת compat=גרסה
יוצר קובץ .pm התואם לאחור לגרסת ה-perl שצוינה.

עבור גרסאות < 5.6.0, השינויים הם.
- אין שימוש ב-'שלנו' (משתמש במקום זאת ב-'use vars')
- ללא 'אזהרות שימוש'

ציון גרסת תאימות גבוהה יותר מהגרסה של perl שבה אתה משתמש
להפעיל h2xs לא תהיה השפעה. אם לא צוין, h2xs יקבע כברירת מחדל תאימות עם
הגרסה של perl שבה אתה משתמש להפעלת h2xs.

-c, --השמטה-קבוע
השמט את "constant()" מקובץ ה-.xs ואת ה-"AUTOLOAD" המתואם מהקובץ
קובץ .pm.

-d, -- איתור באגים
הפעל הודעות ניפוי באגים.

-e, --השמטת-enums=[רגיל ביטוי]
If רגיל ביטוי לא ניתן, דלג על כל הקבועים המוגדרים ב-C
ספירה. אחרת דלג רק על אותם קבועים המוגדרים ב-enum שלהם
שמות תואמים רגיל ביטוי.

השאלה היא איך? רגיל ביטוי הוא אופציונלי, ודא שאחריו מתג זה מופיע ב-
לפחות מתג אחד נוסף אם תשמיט רגיל ביטוי ויש כמה טיעונים תלויים ועומדים
כגון שמות קבצי כותרת. זה בסדר:

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

זה לא בסדר:

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

באחרון, foo.h נלקח כמו רגיל ביטוי.

-f, --כּוֹחַ
מאפשר יצירת הרחבה עבור כותרת גם אם הכותרת הזו לא נמצאת ב
תקן כולל ספריות.

-g, --גלוֹבָּלִי
כלול קוד לאחסון בטוח של נתונים סטטיים בקובץ .xs. הרחבות שלא
לעשות שימוש בנתונים סטטיים יכולים להתעלם מאפשרות זו.

-h, -?, - עזרה
הדפס את השימוש, העזרה והגרסה עבור h2xs זה וצא.

-k, --omit-const-func
עבור ארגומנטים של פונקציה שהוכרזו כ-"const", השמט את התכונה const בקובץ שנוצר
קוד XS.

-m, --gen-tied-var
ניסויי: עבור כל משתנה שהוכרז בקובץ ה-header(s), הכריז על perl
משתנה בעל אותו שם קשור בצורה קסומה למשתנה C.

-n, --שֵׁם=מודול_שם
מציין שם שישמש עבור ההרחבה, למשל, -n RPC::DCE

-o, --אטום-re=רגיל ביטוי
השתמש בסוג נתונים "אטום" עבור סוגי C המותאמים לביטוי הרגולרי, גם אם
טיפוסים אלה הם "typedef"-מקבילים לטיפוסים ממפות סוג. לא אמור לשמש
לְלֹא -x.

זה עשוי להיות שימושי שכן, למשל, טיפוסים שהם "typedef"-שווים למספרים שלמים עשויים
מייצגים ידיות הקשורות למערכת ההפעלה, וייתכן שתרצה לעבוד עם ידיות אלה ב-OO-way,
כמו ב-"$handle->do_something()". השתמש ב-"-o ." אם אתה רוצה לטפל בכל
טיפוסים אטומים.

הסוג להתאמה מסויד (למעט פסיקים, שאין להם רווח לבן לפני כן
אותם, ומספר "*" שאין ביניהם רווח לבן).

-p, --הסר תחילית=קידומת
ציין קידומת שיש להסיר משמות הפונקציות של Perl, למשל,
-p sec_rgy_ זה מגדיר את ה-XS PREFIX מילת מפתח ומסיר את הקידומת מפונקציות
הנטענים אוטומטית באמצעות מנגנון "constant()".

-s, --const-subs=sub1, sub2
צור תת-שגרת perl עבור פקודות המאקרו שצוינו במקום טעינה אוטומטית עם ה-
קָבוּעַ() תת שגרה. ההנחה היא שלפקודות מאקרו אלה יש סוג החזרה של char *,
למשל, -s sec_rgy_wildcard_name,sec_rgy_wildcard_sid.

-t, --סוג ברירת מחדל=סוג
ציין את הסוג הפנימי שבו קָבוּעַ() שימוש במנגנון עבור פקודות מאקרו. ברירת המחדל
הוא IV (מספר שלם בסימן). כרגע כל פקודות המאקרו נמצאו במהלך סריקת הכותרות
ההנחה היא שתהליך יש סוג זה. גרסאות עתידיות של "h2xs" עשויות לזכות ב
יכולת לנחש ניחושים מושכלים.

--השתמש במבחנים חדשים
מתי --גרסת compat (-b) קיים, הבדיקות שנוצרו ישתמשו ב-"Test::More"
במקום "בדיקה" שהיא ברירת המחדל עבור גרסאות לפני 5.6.2. "Test::More" יעשה זאת
להתווסף ל-PEREQ_PM ב-"Makefile.PL" שנוצר.

--השתמש במבחנים ישנים
יאלץ יצירת קוד בדיקה המשתמש במודול ה"בדיקה" הישן יותר.

--דלג-יצואן
אין להשתמש ב"יצואן" ו/או לייצא סמל כלשהו.

--דלג-ppport
אל תשתמש ב-"Devel::PPPort": אין ניידות לגרסה ישנה יותר.

--דלג-טוען אוטומטי
אל תשתמש במודול "AutoLoader"; אבל לשמור על קָבוּעַ() פונקציה ו-"משנה
AUTOLOAD" עבור קבועים.

--דלג-מחמיר
אין להשתמש בפרגמה "קפדנית".

--דילוג על אזהרות
אל תשתמש בפרגמה "אזהרות".

-v, --גִרְסָה=גרסה
ציין מספר גרסה עבור הרחבה זו. מספר גרסה זה נוסף ל-
תבניות. ברירת המחדל היא 0.01, או 0.00_01 אם צוין "-B". הגרסא
שצוין צריך להיות מספרי.

-x, --autogen-xsubs
צור אוטומטית XSUB על סמך הצהרות פונקציות בקובץ הכותרת. ה
יש להתקין את החבילה "C::Scan". אם אפשרות זו מצוינת, השם של
קובץ הכותרת עשוי להיראות כמו "NAME1,NAME2". במקרה זה נעשה שימוש ב-NAME1 במקום ב-
מחרוזת שצוינה, אך XSUBs נפלטים רק עבור ההצהרות הנכללות מהקובץ
NAME2.

שים לב שסוגים מסוימים של ארגומנטים/ערכי החזרה עבור פונקציות עלולים לגרום
XSUB-declarations/typemap-entries שצריכים עריכה ידנית. כאלה עשויים להיות חפצים אשר
לא ניתן להמיר מ/למצביע (כמו "ארוך ארוך"), מצביעים לפונקציות או
מערכים. ראה גם את הסעיף בנושא "הגבלות של -x".

דוגמאות


# התנהגות ברירת מחדל, ההרחבה היא Rusers
h2xs rpcsvc/rusers

# אותו הדבר, אבל הסיומת היא RUSERS
h2xs -n RUSERS rpcsvc/rusers

# ההרחבה היא rpcsvc::rusers. עדיין מוצא
h2xs rpcsvc::rusers

# ההרחבה היא ONC::RPC. עדיין מוצא
h2xs -n ONC::RPC rpcsvc/rusers

# ללא קבוע() או AUTOLOAD
h2xs -c rpcsvc/rusers

# יוצר תבניות עבור הרחבה בשם RPC
h2xs -cfn RPC

# ההרחבה היא ONC::RPC.
h2xs -cfn ONC::RPC

# הרחבה היא מודול Perl טהור ללא קוד XS.
h2xs -X My::Module

# ההרחבה היא Lib::Foo שעובדת לפחות עם Perl5.005_03.
# נוצרים קבועים עבור כל #defines ו-enums h2xs יכולים למצוא
# ב-foo.h.
h2xs -b 5.5.3 -n Lib::Foo foo.h

# ההרחבה היא Lib::Foo שעובדת לפחות עם Perl5.005_03.
# קבועים נוצרים עבור כל # מגדיר אבל רק עבור enums
# ששמותיו אינם מתחילים ב-'bar_'.
h2xs -b 5.5.3 -e '^bar_' -n Lib::Foo foo.h

# Makefile.PL יחפש את הספרייה -lrpc ב
# ספרייה נוספת /opt/net/lib
h2xs rpcsvc/rusers -L/opt/net/lib -lrpc

# ההרחבה היא DCE::rgynbase
הקידומת # "sec_rgy_" נשמטה משמות הפונקציות של perl
h2xs -n DCE::rgynbase -p sec_rgy_ dce/rgynbase

# ההרחבה היא DCE::rgynbase
הקידומת # "sec_rgy_" נשמטה משמות הפונקציות של perl
נוצרו # תתי שגרות עבור sec_rgy_wildcard_name ו
# sec_rgy_wildcard_sid
h2xs -n DCE::rgynbase -p sec_rgy_ \
-s sec_rgy_wildcard_name,sec_rgy_wildcard_sid dce/rgynbase

# צור XS ללא הגדרות ב-perl.h, אלא עם הצהרות פונקציות
# גלוי מ-perl.h. שם ההרחבה הוא perl1.
# בעת סריקת perl.h, הגדר -DEXT=extern -DdEXT= -DINIT(x)=
# קו נטוי נוסף למטה מכיוון שהמחרוזת מועברת לקליפה.
# שימו לב שספרייה עם קבצי כותרות perl תעשה זאת
# יתווסף אוטומטית כדי לכלול נתיב.
h2xs -xAn perl1 -F "-DEXT=extern -DdEXT= -DINIT\(x\)=" perl.h

# אותו דבר עם הצהרת פונקציות ב-proto.h כפי שניתן לראות מ-perl.h.
h2xs -xAn perl2 perl.h,proto.h

# זהה אבל בחר רק פונקציות שתואמות /^av_/
h2xs -M '^av_' -xAn perl2 perl.h,proto.h

# אותו דבר אבל התייחסו ל-SV* וכו' כאל סוגים "אטומים".
h2xs -o '^[S]V \*$' -M '^av_' -xAn perl2 perl.h,proto.h

הארכה מבוסס on .h ו .c קבצים
נניח שיש לך כמה קבצי C המטמיעים פונקציונליות כלשהי, והמתאים
קבצי כותרות. כיצד ליצור הרחבה אשר הופכת את הפונקציונליות הזו לנגישה ב
פרל? הדוגמה להלן מניחה שקובצי הכותרת הם interface_simple.h ו
interface_hairy.h, ואתה רוצה שמודול ה-perl יקרא "Ext::Ension". אם אתה צריך
כמה הנחיות קדם-מעבד ו/או קישור עם ספריות חיצוניות, ראה את הדגלים "-F",
"-L" ו-"-l" ב-"OPTIONS".

מצא את שם הספרייה
התחל עם ריצת דמה של h2xs:

h2xs -Afn Ext::Ension

המטרה היחידה של שלב זה היא ליצור את המדריכים הדרושים, וליידע אותך
שמות המדריכים הללו. מהפלט אתה יכול לראות שהספרייה עבור
ההרחבה היא סיומת.

העתק קבצי C
העתק את קובצי הכותרות וקבצי ה-C לספרייה זו סיומת.

צור את ההרחבה
הפעל h2xs, החלפת קבצים ישנים יותר שנוצרו אוטומטית:

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

h2xs מחפש קבצי כותרות לאחר שינוי לספריית ההרחבה, כך שהוא ימצא
קבצי הכותרות שלך בסדר.

ארכיון ובדיקה
כרגיל, רוץ

cd Ext/Ension
פרל Makefile.PL
לעשות דיסט
לעשות
לעשות מבחן

רמזים
חשוב לעשות "לעשות דיסט" מוקדם ככל האפשר. כך תוכלו בקלות
למזג(1) השינויים שלך בקבצים שנוצרו אוטומטית אם תחליט לערוך את קבצי ".h" שלך ו
הרץ מחדש את h2xs.

אל תשכח לערוך את התיעוד בקובץ שנוצר .אחר הצהריים קובץ.

ראה את הקבצים שנוצרו אוטומטית כשלדים בלבד, אתה יכול להמציא ממשקים טובים יותר
ממה ש-h2xs יכול לנחש.

שקול את הסעיף הזה כקו מנחה בלבד, כמה אפשרויות אחרות של h2xs עשויות להתאים יותר
הצרכים שלך.

הסביבה


לא נעשה שימוש במשתני סביבה.

השתמש ב-h2xs באינטרנט באמצעות שירותי onworks.net


שרתים ותחנות עבודה בחינם

הורד אפליקציות Windows & Linux

פקודות לינוקס

Ad