.\" Man page generated from reStructuredText .\" by the Docutils 0.23 manpage writer. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "glib-mkenums" "1" "" "" .SH "نام (NAME)" glib\-mkenums \- ابزار استخراج توضیحات شمارشی C و تولید تعاریف GType .\" This has to be duplicated from above to make it machine-readable by `reuse`: .\" SPDX-FileCopyrightText: 2003 Matthias Clasen .\" SPDX-FileCopyrightText: 2009 Christian Persch .\" SPDX-FileCopyrightText: 2010 Allison Karlitskaya .\" SPDX-FileCopyrightText: 2012, 2013, 2016 Red Hat, Inc. .\" SPDX-FileCopyrightText: 2017, 2019, 2022 Emmanuele Bassi .\" SPDX-FileCopyrightText: 2018, 2020 Centricular .\" SPDX-FileCopyrightText: 2020 Aleksander Morgado .\" SPDX-License-Identifier: LGPL-2.1-or-later . .SH "خلاصه دستور (SYNOPSIS)" .nf \fBglib\-mkenums\fP [OPTION…] [FILE…] .fi .sp .SH "توضیحات (DESCRIPTION)" .sp دستور \fBglib\-mkenums\fP ابزار کوچکی است که کدهای C را برای استخراج تعاریف enum تجزیه کرده و بر اساس الگوهای متنی مشخص‌شده توسط کاربر، توصیف‌های enum را تولید می‌کند. به طور معمول، می‌توانید از این ابزار برای تولید انواع شمارشی برای سیستم نوع GType، ویژگی‌های GObject و مرتب‌سازی سیگنال‌ها (signal marshalling) استفاده کنید؛ علاوه بر این، می‌توانید از آن برای تولید مقادیر شمارشی طرح‌واره‌های GSettings بهره ببرید. .sp دستور \fBglib\-mkenums\fP فهرستی از پرونده‌های معتبر کد C را به عنوان ورودی دریافت می‌کند. گزینه‌های مشخص‌شده متن تولیدشده را کنترل کرده و کلیدواژه‌های گوناگون محصور در نویسه‌های \fB@\fP را در الگوها جایگزین می‌نمایند. .sp از نسخهٔ 2.74، کتابخانهٔ GLib ماکروهای پیش‌پردازندهٔ C با نام‌های \fBG_DEFINE_ENUM_TYPE\fP و \fBG_DEFINE_FLAGS_TYPE\fP را ارائه می‌دهد. این ماکروها می‌توانند برای تعریف یک GType در پروژه‌هایی که دارای تعداد اندکی از انواع شمارشی کوچک هستند، بدون نیاز به درگیر شدن با پیچیدگی‌های تولید کد در زمان ساخت (build time)، به کار روند. .SS "جایگزینی‌های متن تولیدی (PRODUCTION TEXT SUBSTITUTIONS)" .sp کلیدواژه‌های مشخصی که در نویسه‌های \fB@\fP محصور شده‌اند در متن خروجی جایگزین خواهند شد. برای مثال‌های جایگزینی کلیدواژه‌های زیر، تعریف نمونهٔ enum زیر در نظر گرفته شده است: .INDENT 0.0 .INDENT 3.5 .sp .EX typedef enum { PREFIX_THE_XVALUE = 1 << 3, PREFIX_ANOTHER_VALUE = 1 << 4 } PrefixTheXEnum; .EE .UNINDENT .UNINDENT .sp \fB@EnumName@\fP .INDENT 0.0 .INDENT 3.5 نام enum که هم‌اکنون در حال پردازش است؛ فرض می‌شود نام‌های enum دارای فضای نام مناسب بوده و برای جداسازی واژه‌ها از حروف کوچک و بزرگ ترکیبی استفاده می‌کنند (مانند \fBPrefixTheXEnum\fP). .UNINDENT .UNINDENT .sp \fB@enum_name@\fP .INDENT 0.0 .INDENT 3.5 نام enum با واژه‌های حروف کوچک که با زیرخط از یکدیگر جدا شده‌اند (مانند \fBprefix_the_xenum\fP). .UNINDENT .UNINDENT .sp \fB@ENUMNAME@\fP .INDENT 0.0 .INDENT 3.5 نام enum با واژه‌های حروف بزرگ که با زیرخط از یکدیگر جدا شده‌اند (مانند \fBPREFIX_THE_XENUM\fP). .UNINDENT .UNINDENT .sp \fB@ENUMSHORT@\fP .INDENT 0.0 .INDENT 3.5 نام enum با واژه‌های حروف بزرگ و جداشده با زیرخط، با پیشوند حذف‌شده (مانند \fBTHE_XENUM\fP). .UNINDENT .UNINDENT .sp \fB@ENUMPREFIX@\fP .INDENT 0.0 .INDENT 3.5 پیشوند نام enum (مانند \fBPREFIX\fP). .UNINDENT .UNINDENT .sp \fB@VALUENAME@\fP .INDENT 0.0 .INDENT 3.5 نام مقدار enum که هم‌اکنون در حال پردازش است، با واژه‌های حروف بزرگ و جداشده با زیرخط؛ این همان نگارش تحت‌اللفظی پیش‌فرض مقادیر enum در کدهای مبدأ C است (مانند \fBPREFIX_THE_XVALUE\fP). .UNINDENT .UNINDENT .sp \fB@valuenick@\fP .INDENT 0.0 .INDENT 3.5 یک نام مستعار برای مقدار enum که هم‌اکنون در حال پردازش است؛ این مقدار معمولاً با حذف واژه‌های پیشوند مشترک تمامی مقادیر enum جاری تولید می‌شود که در آن واژه‌ها با حروف کوچک نوشته شده و زیرخط‌ها با خط تیره جایگزین می‌شوند (مانند \fBthe\-xvalue\fP). .UNINDENT .UNINDENT .sp \fB@valuenum@\fP .INDENT 0.0 .INDENT 3.5 مقدار عدد صحیح برای مقدار enum که هم‌اکنون در حال پردازش است. اگر ارزیابی مقدار ناموفق باشد، \fBglib\-mkenums\fP با وضعیت خطا خارج می‌شود، اما این اتفاق تنها در صورتی رخ می‌دهد که \fB@valuenum@\fP در الگوی تولید مقادیر شما ظاهر شده باشد. (از نسخهٔ: 2.26) .UNINDENT .UNINDENT .sp \fB@type@\fP .INDENT 0.0 .INDENT 3.5 بسته به این که آیا تعاریف مقدار enum شامل عملگرهای شیفت بیتی بوده‌اند یا خیر، این مقدار با ‘enum’ یا ‘flags’ جایگزین می‌شود (مانند \fBflags\fP). .UNINDENT .UNINDENT .sp \fB@Type@\fP .INDENT 0.0 .INDENT 3.5 همانند \fB@type@\fP با این تفاوت که حرف اول آن بزرگ است (مانند \fBFlags\fP). .UNINDENT .UNINDENT .sp \fB@TYPE@\fP .INDENT 0.0 .INDENT 3.5 همانند \fB@type@\fP با این تفاوت که تمام حروف آن بزرگ هستند (مانند \fBFLAGS\fP). .UNINDENT .UNINDENT .sp \fB@filename@\fP .INDENT 0.0 .INDENT 3.5 مسیر کامل پروندهٔ ورودی که هم‌اکنون در حال پردازش است (مانند \fB/build/environment/project/src/foo.h\fP). .UNINDENT .UNINDENT .sp \fB@basename@\fP .INDENT 0.0 .INDENT 3.5 نام پایه پرونده ورودی که در حال حاضر پردازش می‌شود (مانند \fBfoo.h\fP). معمولاً برای بهبود بازتولیدپذیری ساخت، بهتر است در الگوهای خود به جای \fB@filename@\fP از \fB@basename@\fP استفاده کنید. (از نسخه: 2.22) .UNINDENT .UNINDENT .SS "توسعه‌های تری‌گراف (TRIGRAPH EXTENSIONS)" .sp برخی از کامنت‌های C در تعاریف enum تجزیه‌شده به شکل ویژه‌ای پردازش می‌شوند؛ چنین کامنت‌هایی با توالی تری‌گراف \fB/*<\fP آغاز شده و با توالی تری‌گراف \fB>*/\fP\& پایان می‌یابند. .sp گزینه‌های زیر را می‌توان به ازای هر تعریف enum مشخص کرد: .sp \fBskip\fP .INDENT 0.0 .INDENT 3.5 مشخص می‌کند که باید از این تعریف enum صرف‌نظر شود. .UNINDENT .UNINDENT .sp \fBflags\fP .INDENT 0.0 .INDENT 3.5 مشخص می‌کند که با این enum باید به عنوان یک تعریف پرچم (flags) رفتار شود. .UNINDENT .UNINDENT .sp \fBunderscore_name\fP .INDENT 0.0 .INDENT 3.5 جداسازی کلمات مورد استفاده در تابع \fB*_get_type()\fP را مشخص می‌کند. برای نمونه، \fB/*< underscore_name=gnome_vfs_uri_hide_options >*/\fP\&. .UNINDENT .UNINDENT .sp \fBsince\fP .INDENT 0.0 .INDENT 3.5 برچسب نسخه‌ای را مشخص می‌کند که برای جایگزینی کلمه کلیدی \fB@enumsince@\fP در الگو استفاده خواهد شد؛ هنگام مستندسازی متدهای تولیدشده از enumها کاربرد دارد (مانند \fBSince: @enumsince@\fP). (از نسخه: 2.66) .UNINDENT .UNINDENT .sp گزینه‌های زیر را می‌توان به ازای هر تعریف مقدار مشخص کرد: .sp \fBskip\fP .INDENT 0.0 .INDENT 3.5 مشخص می‌کند که باید از این مقدار صرف‌نظر شود. .UNINDENT .UNINDENT .sp \fBnick\fP .INDENT 0.0 .INDENT 3.5 نام مستعاری را که در غیر این صورت به طور خودکار تولید می‌شد، مشخص می‌کند. .UNINDENT .UNINDENT .sp مثال‌ها: .INDENT 0.0 .INDENT 3.5 .sp .EX typedef enum /*< skip >*/ { PREFIX_FOO } PrefixThisEnumWillBeSkipped; typedef enum /*< flags,prefix=PREFIX,since=1.0 >*/ { PREFIX_THE_ZEROTH_VALUE, /*< skip >*/ PREFIX_THE_FIRST_VALUE, PREFIX_THE_SECOND_VALUE, PREFIX_THE_THIRD_VALUE, /*< nick=the\-last\-value >*/ } PrefixTheFlagsEnum; .EE .UNINDENT .UNINDENT .SH "گزینه‌ها (OPTIONS)" .sp \fB\-\-fhead \fP .INDENT 0.0 .INDENT 3.5 پیش از پردازش پرونده‌های ورودی، \fBTEXT\fP را خروجی می‌دهد. .sp می‌توانید این گزینه را چندین بار مشخص کنید و مقادیر \fBTEXT\fP به یکدیگر متصل خواهند شد. .sp هنگامی که همراه با یک پرونده الگو استفاده شود، \fBTEXT\fP به ابتدای بخش \fBfile\-header\fP الگو افزوده خواهد شد. .UNINDENT .UNINDENT .sp \fB\-\-fprod \fP .INDENT 0.0 .INDENT 3.5 هر بار که یک پرونده ورودی جدید پردازش می‌شود، \fBTEXT\fP را خروجی می‌دهد. .sp می‌توانید این گزینه را چندین بار مشخص کنید و مقادیر \fBTEXT\fP به یکدیگر متصل خواهند شد. .sp هنگامی که همراه با یک پرونده الگو استفاده شود، \fBTEXT\fP به انتهای بخش \fBfile\-production\fP الگو افزوده خواهد شد. .UNINDENT .UNINDENT .sp \fB\-\-ftail \fP .INDENT 0.0 .INDENT 3.5 پس از پردازش تمام پرونده‌های ورودی، \fBTEXT\fP را خروجی می‌دهد. .sp می‌توانید این گزینه را چندین بار مشخص کنید و مقادیر \fBTEXT\fP به یکدیگر متصل خواهند شد. .sp هنگامی که همراه با یک پرونده الگو استفاده شود، \fBTEXT\fP به انتهای بخش \fBfile\-tail\fP الگو افزوده خواهد شد. .UNINDENT .UNINDENT .sp \fB\-\-eprod \fP .INDENT 0.0 .INDENT 3.5 هر بار که در پرونده‌های ورودی با یک enum مواجه شود، \fBTEXT\fP را خروجی می‌دهد. .UNINDENT .UNINDENT .sp \fB\-\-vhead \fP .INDENT 0.0 .INDENT 3.5 پیش از پیمایش بر روی مجموعه مقادیر یک enum، متن \fBTEXT\fP را خروجی می‌دهد. .sp می‌توانید این گزینه را چندین بار مشخص کنید و مقادیر \fBTEXT\fP به یکدیگر متصل خواهند شد. .sp هنگامی که همراه با یک پرونده الگو استفاده شود، \fBTEXT\fP به ابتدای بخش \fBvalue\-header\fP الگو افزوده خواهد شد. .UNINDENT .UNINDENT .sp \fB\-\-vprod \fP .INDENT 0.0 .INDENT 3.5 به ازای هر مقدار از یک enum، متن \fBTEXT\fP را خروجی می‌دهد. .sp می‌توانید این گزینه را چندین بار مشخص کنید و مقادیر \fBTEXT\fP به یکدیگر متصل خواهند شد. .sp هنگامی که همراه با یک پرونده الگو استفاده شود، \fBTEXT\fP به انتهای بخش \fBvalue\-production\fP الگو افزوده خواهد شد. .UNINDENT .UNINDENT .sp \fB\-\-vtail \fP .INDENT 0.0 .INDENT 3.5 پس از پیمایش تمام مقادیر یک enum، متن \fBTEXT\fP را خروجی می‌دهد. .sp می‌توانید این گزینه را چندین بار مشخص کنید و مقادیر \fBTEXT\fP به یکدیگر متصل خواهند شد. .sp هنگامی که همراه با یک پرونده الگو استفاده شود، \fBTEXT\fP به انتهای بخش \fBvalue\-tail\fP الگو افزوده خواهد شد. .UNINDENT .UNINDENT .sp \fB\-\-comments \fP .INDENT 0.0 .INDENT 3.5 الگویی برای کامنت‌های خودکار تولیدشده؛ مقدار پیش‌فرض (برای تولید کدهای C) عبارت است از \fB\(dq/* @comment@ */\(dq\fP\&. .UNINDENT .UNINDENT .sp \fB\-\-template \fP .INDENT 0.0 .INDENT 3.5 خواندن قالب‌ها از پروندهٔ مشخص‌شده. قالب‌ها در کامنت‌های زبان C با قالب‌بندی ویژه قرار دارند: .INDENT 0.0 .INDENT 3.5 .sp .EX /*** BEGIN section ***/ /*** END section ***/ .EE .UNINDENT .UNINDENT .sp مقدار \fBsection\fP می‌تواند \fBfile\-header\fP، \fBfile\-production\fP، \fBfile\-tail\fP، \fBenumeration\-production\fP، \fBvalue\-header\fP، \fBvalue\-production\fP، \fBvalue\-tail\fP یا \fBcomment\fP باشد\&. .UNINDENT .UNINDENT .sp \fB\-\-identifier\-prefix \fP .INDENT 0.0 .INDENT 3.5 مشخص می‌کند چه بخشی از نام enum باید به عنوان پیشوند تفسیر شود (برای نمونه، \fBGtk\fP در \fBGtkDirectionType\fP). به طور معمول این مقدار به صورت خودکار تشخیص داده می‌شود، اما در صورتی که بزرگ و کوچک بودن حروف فضای نام شما غیرعادی باشد، ممکن است نیاز به تغییر و بازنویسی مقدار پیش‌فرض داشته باشید. .UNINDENT .UNINDENT .sp \fB\-\-symbol\-prefix \fP .INDENT 0.0 .INDENT 3.5 مشخص می‌کند چه پیشوندی باید برای مطابقت با پیشوند شناسه در نام توابع مرتبط در C استفاده شود (برای نمونه، \fBgtk\fP در \fBgtk_direction_type_get_type\fP). به طور معادل، این نسخه با حروف کوچک از بخش پیشوند نام مقادیر enum است (برای نمونه، \fBGTK\fP در \fBGTK_DIR_UP\fP). مقدار پیش‌فرض، همان پیشوند شناسه تبدیل‌شده به حروف کوچک است. .UNINDENT .UNINDENT .sp \fB\-\-help\fP .INDENT 0.0 .INDENT 3.5 نمایش راهنمای مختصر و خروج. .UNINDENT .UNINDENT .sp \fB\-\-version\fP .INDENT 0.0 .INDENT 3.5 نمایش نسخه و خروج. .UNINDENT .UNINDENT .sp \fB\-\-output \fP .INDENT 0.0 .INDENT 3.5 نوشتن خروجی در \fBFILE\fP به جای خروجی استاندارد (stdout). .UNINDENT .UNINDENT .sp \fB@RSPFILE\fP .INDENT 0.0 .INDENT 3.5 هنگامی که به عنوان تنها آرگومان ارسال شود، آرگومان‌های واقعی را از \fBRSPFILE\fP می‌خواند و تجزیه می‌کند\&. این ویژگی در سیستم‌هایی با محدودیت طول کم در خط فرمان مفید است. برای نمونه، ویندوز محدودیتی برابر با ۸۱۹۱ نویسه دارد. .UNINDENT .UNINDENT .SH "استفاده از قالب‌ها (USING TEMPLATES)" .sp به جای ارسال بخش‌های گوناگون پروندهٔ تولیدشده به خط فرمان \fBglib\-mkenums\fP، قویاً توصیه می‌شود که از یک پروندهٔ قالب استفاده کنید، به‌ویژه برای تولید کدهای منبع C. .sp یک پروندهٔ قالب سرایند (header) C معمولاً به این صورت خواهد بود: .INDENT 0.0 .INDENT 3.5 .sp .EX /*** BEGIN file\-header ***/ #pragma once /* Include the main project header */ #include \(dqproject.h\(dq G_BEGIN_DECLS /*** END file\-header ***/ /*** BEGIN file\-production ***/ /* enumerations from \(dq@basename@\(dq */ /*** END file\-production ***/ /*** BEGIN value\-header ***/ GType @enum_name@_get_type (void); #define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ()) /*** END value\-header ***/ /*** BEGIN file\-tail ***/ G_END_DECLS /*** END file\-tail ***/ .EE .UNINDENT .UNINDENT .sp یک پروندهٔ قالب منبع C معمولاً به این صورت خواهد بود: .INDENT 0.0 .INDENT 3.5 .sp .EX /*** BEGIN file\-header ***/ #include \(dqconfig.h\(dq #include \(dqenum\-types.h\(dq /*** END file\-header ***/ /*** BEGIN file\-production ***/ /* enumerations from \(dq@basename@\(dq */ /*** END file\-production ***/ /*** BEGIN value\-header ***/ GType @enum_name@_get_type (void) { static GType static_g_@type@_type_id = 0; if (g_once_init_enter_pointer (&static_g_@type@_type_id)) { static const G@Type@Value values[] = { /*** END value\-header ***/ /*** BEGIN value\-production ***/ { @VALUENAME@, \(dq@VALUENAME@\(dq, \(dq@valuenick@\(dq }, /*** END value\-production ***/ /*** BEGIN value\-tail ***/ { 0, NULL, NULL } }; GType g_@type@_type_id = g_@type@_register_static (g_intern_static_string (\(dq@EnumName@\(dq), values); g_once_init_leave_pointer (&static_g_@type@_type_id, g_@type@_type_id); } return static_g_@type@_type_id; } /*** END value\-tail ***/ .EE .UNINDENT .UNINDENT .sp پرونده‌های قالب برای ویرایش و به‌روزرسانی آسان‌تر هستند، و می‌توان از آن‌ها برای تولید انواع مختلف خروجی با استفاده از همان خط فرمان یا ابزارها در طول فرایند ساخت استفاده کرد. .SH "استفاده از GLIB-MKENUMS همراه با MESON (USING GLIB-MKENUMS WITH MESON)" .sp Meson در ماژول \fBgnome\fP خود، به‌طور پیش‌فرض از تولید انواع شمارشی با استفاده از \fBglib\-mkenums\fP پشتیبانی می‌کند. .sp در پروندهٔ \fBmeson.build\fP خود، معمولاً متد \fBgnome.mkenums_simple()\fP را برای تولید انواع شمارشی استاندارد از فهرستی از هدرهای مورد بررسی فراخوانی خواهید کرد: .INDENT 0.0 .INDENT 3.5 .sp .EX project_headers = [ \(aqproject\-foo.h\(aq, \(aqproject\-bar.h\(aq, \(aqproject\-baz.h\(aq, ] gnome = import(\(aqgnome\(aq) enum_files = gnome.mkenums_simple(\(aqenum\-types\(aq, sources: project_headers, ) .EE .UNINDENT .UNINDENT .sp متغیر \fBenum_files\fP شامل آرایه‌ای از دو عنصر با ترتیب زیر خواهد بود: .INDENT 0.0 .IP 1. 3 یک هدف ساخت برای پروندهٔ منبع .IP 2. 3 یک هدف ساخت برای پروندهٔ هدر .UNINDENT .sp باید از اشیاء بازگردانده‌شده برای ایجاد وابستگی به هر هدف ساخت دیگری که به پروندهٔ منبع یا هدر ارجاع می‌دهد استفاده کنید؛ برای نمونه، اگر از پروندهٔ منبع برای ساخت یک کتابخانه استفاده می‌کنید: .INDENT 0.0 .INDENT 3.5 .sp .EX mainlib = library(\(aqproject\(aq, sources: project_sources + enum_files, … ) .EE .UNINDENT .UNINDENT .sp علاوه بر این، اگر پروندهٔ هدر تولیدشده را در یک هدف ساخت که به کتابخانهٔ ساخته‌شده وابسته است وارد می‌کنید، باید مطمئن شوید که وابستگی داخلی، هدر تولیدشده را به عنوان یک پروندهٔ منبع مورد نیاز در بر می‌گیرد: .INDENT 0.0 .INDENT 3.5 .sp .EX mainlib_dep = declare_dependency(sources: enum_files[1], link_with: mainlib) .EE .UNINDENT .UNINDENT .sp نباید پروندهٔ منبع تولیدشده را نیز اضافه کنید، در غیر این صورت برای هر هدفی که به آن وابسته است به‌طور جداگانه ساخته می‌شود که باعث شکست ساخت خواهد شد. برای آگاهی بیشتر دربارهٔ این که چرا همهٔ این موارد الزامی است، لطفاً به بخش مربوطه در پرسش‌های متداول Meson مراجعه کنید: \%\&. .sp اگر در حال تولید پرونده‌های هدر و منبع C هستید که به الگوهای خاصی نیاز دارند، می‌توانید از \fBgnome.mkenums()\fP برای ارائهٔ آن هدرها استفاده کنید؛ برای نمونه: .INDENT 0.0 .INDENT 3.5 .sp .EX enum_files = gnome.mkenums(\(aqenum\-types\(aq, sources: project_headers, h_template: \(aqenum\-types.h.in\(aq, c_template: \(aqenum\-types.c.in\(aq, install_header: true, ) .EE .UNINDENT .UNINDENT .sp برای اطلاعات بیشتر، به مستندات Meson در \% برای \fBgnome.mkenums()\fP مراجعه کنید\&. .SH "استفاده از GLIB-MKENUMS همراه با AUTOTOOLS (USING GLIB-MKENUMS WITH AUTOTOOLS)" .sp برای استفاده از \fBglib\-mkenums\fP در پروژهٔ خود هنگام استفاده از Autotools به عنوان سیستم ساخت، ابتدا باید پروندهٔ \fBconfigure.ac\fP خود را ویرایش کنید تا مطمئن شوید دستور مناسب را با استفاده از \fBpkg\-config\fP پیدا می‌کنید، مشابه روشی که فلگ‌های کامپایلر و پیونددهنده را برای GLib می‌یابید: .INDENT 0.0 .INDENT 3.5 .sp .EX PKG_PROG_PKG_CONFIG([0.28]) PKG_CHECK_VAR([GLIB_MKENUMS], [glib\-2.0], [glib_mkenums]) .EE .UNINDENT .UNINDENT .sp در پروندهٔ \fBMakefile.am\fP خود، معمولاً از قواعدی مانند این استفاده خواهید کرد: .INDENT 0.0 .INDENT 3.5 .sp .EX # A list of headers to inspect project_headers = \e project\-foo.h \e project\-bar.h \e project\-baz.h enum\-types.h: $(project_headers) enum\-types.h.in $(AM_V_GEN)$(GLIB_MKENUMS) \e \-\-template=enum\-types.h.in \e \-\-output=$@ \e $(project_headers) enum\-types.c: $(project_headers) enum\-types.c.in enum\-types.h $(AM_V_GEN)$(GLIB_MKENUMS) \e \-\-template=enum\-types.c.in \e \-\-output=$@ \e $(project_headers) # Build the enum types files before every other target BUILT_SOURCES += enum\-types.h enum\-types.c CLEANFILES += enum\-types.h enum\-types.c EXTRA_DIST += enum\-types.h.in enum\-types.c.in .EE .UNINDENT .UNINDENT .sp در مثال بالا، متغیری به نام \fBproject_headers\fP داریم که در آن به تمام پرونده‌های هدری که می‌خواهیم برای تولید GTypeهای شمارشی بررسی شوند ارجاع می‌دهیم. در قاعدهٔ \fBenum\-types.h\fP از \fBglib\-mkenums\fP با الگویی به نام \fBenum\-types.h.in\fP برای تولید پروندهٔ هدر استفاده می‌کنیم؛ به طور مشابه، در قاعدهٔ \fBenum\-types.c\fP از الگویی به نام \fBenum\-types.c.in\fP استفاده می‌کنیم\&. .SH "همچنین ببینید (SEE ALSO)" .sp glib\-genmarshal(1) \% .\" End of generated man page.