glib-mkenums(1) General Commands Manual glib-mkenums(1) (NAME) glib-mkenums - C GType (SYNOPSIS) glib-mkenums [OPTION] [FILE] (DESCRIPTION) glib-mkenums C enum enum . GType GObject (signal marshalling) GSettings . glib-mkenums C . @ . 2.74 GLib C G_DEFINE_ENUM_TYPE G_DEFINE_FLAGS_TYPE . GType (build time) . (PRODUCTION TEXT SUBSTITUTIONS) @ . enum : typedef enum { PREFIX_THE_XVALUE = 1 << 3, PREFIX_ANOTHER_VALUE = 1 << 4 } PrefixTheXEnum; @EnumName@ enum enum ( PrefixTheXEnum). @enum_name@ enum ( prefix_the_xenum). @ENUMNAME@ enum ( PREFIX_THE_XENUM). @ENUMSHORT@ enum ( THE_XENUM). @ENUMPREFIX@ enum ( PREFIX). @VALUENAME@ enum enum C ( PREFIX_THE_XVALUE). @valuenick@ enum enum ( the-xvalue). @valuenum@ enum . glib-mkenums @valuenum@ . ( : 2.26) @type@ enum `enum' `flags' ( flags). @Type@ @type@ ( Flags). @TYPE@ @type@ ( FLAGS). @filename@ ( /build/environment/project/src/foo.h). @basename@ ( foo.h). @filename@ @basename@ . ( : 2.22) (TRIGRAPH EXTENSIONS) C enum /*< >*/ . enum : skip enum . flags enum (flags) . underscore_name *_get_type() . /*< underscore_name=gnome_vfs_uri_hide_options >*/. since @enumsince@ enum ( Since: @enumsince@). ( : 2.66) : skip . nick . : 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; (OPTIONS) --fhead TEXT . TEXT . TEXT file-header . --fprod TEXT . TEXT . TEXT file-production . --ftail TEXT . TEXT . TEXT file-tail . --eprod enum TEXT . --vhead enum TEXT . TEXT . TEXT value-header . --vprod enum TEXT . TEXT . TEXT value-production . --vtail enum TEXT . TEXT . TEXT value-tail . --comments ( C) "/* @comment@ */". --template . C : /*** BEGIN section ***/ /*** END section ***/ section file-header file-production file-tail enumeration-production value-header value-production value-tail comment . --identifier-prefix enum ( Gtk GtkDirectionType). . --symbol-prefix C ( gtk gtk_direction_type_get_type). enum ( GTK GTK_DIR_UP). . --help . --version . --output FILE (stdout). @RSPFILE RSPFILE . . . (USING TEMPLATES) glib-mkenums C. (header) C : /*** BEGIN file-header ***/ #pragma once /* Include the main project header */ #include "project.h" G_BEGIN_DECLS /*** END file-header ***/ /*** BEGIN file-production ***/ /* enumerations from "@basename@" */ /*** 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 ***/ C : /*** BEGIN file-header ***/ #include "config.h" #include "enum-types.h" /*** END file-header ***/ /*** BEGIN file-production ***/ /* enumerations from "@basename@" */ /*** 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@, "@VALUENAME@", "@valuenick@" }, /*** END value-production ***/ /*** BEGIN value-tail ***/ { 0, NULL, NULL } }; GType g_@type@_type_id = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); g_once_init_leave_pointer (&static_g_@type@_type_id, g_@type@_type_id); } return static_g_@type@_type_id; } /*** END value-tail ***/ . GLIB-MKENUMS MESON (USING GLIB-MKENUMS WITH MESON) Meson gnome glib-mkenums . meson.build gnome.mkenums_simple() : project_headers = [ 'project-foo.h', 'project-bar.h', 'project-baz.h', ] gnome = import('gnome') enum_files = gnome.mkenums_simple('enum-types', sources: project_headers, ) enum_files : 1. 2. : mainlib = library('project', sources: project_sources + enum_files, ) : mainlib_dep = declare_dependency(sources: enum_files[1], link_with: mainlib) . Meson : . C gnome.mkenums() : enum_files = gnome.mkenums('enum-types', sources: project_headers, h_template: 'enum-types.h.in', c_template: 'enum-types.c.in', install_header: true, ) Meson gnome.mkenums() . GLIB-MKENUMS AUTOTOOLS (USING GLIB-MKENUMS WITH AUTOTOOLS) glib-mkenums Autotools configure.ac pkg-config GLib : PKG_PROG_PKG_CONFIG([0.28]) PKG_CHECK_VAR([GLIB_MKENUMS], [glib-2.0], [glib_mkenums]) Makefile.am : # A list of headers to inspect project_headers = \ project-foo.h \ project-bar.h \ project-baz.h enum-types.h: $(project_headers) enum-types.h.in $(AM_V_GEN)$(GLIB_MKENUMS) \ --template=enum-types.h.in \ --output=$@ \ $(project_headers) enum-types.c: $(project_headers) enum-types.c.in enum-types.h $(AM_V_GEN)$(GLIB_MKENUMS) \ --template=enum-types.c.in \ --output=$@ \ $(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 project_headers GType . enum-types.h glib-mkenums enum-types.h.in enum-types.c enum-types.c.in . (SEE ALSO) glib-genmarshal(1) glib-mkenums(1)