forked from AuroraMiddleware/gtk
32298832ed
Now that a single shared object can contain multiple backends we also need to provide a simple way for third party code to verify that the copy of GDK they are linking to supports their backend. The simplest way to verify is an m4 macro, GTK_CHECK_BACKEND(), shipped with the gtk+ m4 macros. The usage is pretty basic: GTK_CHECK_BACKEND([x11], [gtk_has_x11=yes], [gtk_has_x11=no]) AM_CONDITIONAL(BUILD_X11_CODE, test "x$gtk_has_x11" = "xno") https://bugzilla.gnome.org/show_bug.cgi?id=642479
102 lines
4.1 KiB
XML
102 lines
4.1 KiB
XML
<?xml version="1.0"?>
|
|
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
|
|
]>
|
|
<refentry id="gtk-compiling">
|
|
<refmeta>
|
|
<refentrytitle>Compiling GTK+ Applications</refentrytitle>
|
|
<manvolnum>3</manvolnum>
|
|
<refmiscinfo>GTK Library</refmiscinfo>
|
|
</refmeta>
|
|
|
|
<refnamediv>
|
|
<refname>Compiling GTK+ Applications</refname>
|
|
<refpurpose>
|
|
How to compile your GTK+ application
|
|
</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsect1>
|
|
<title>Compiling GTK+ Applications on UNIX</title>
|
|
|
|
<para>
|
|
To compile a GTK+ application, you need to tell the compiler where to
|
|
find the GTK+ header files and libraries. This is done with the
|
|
<literal>pkg-config</literal> utility.
|
|
</para>
|
|
<para>
|
|
The following interactive shell session demonstrates how
|
|
<literal>pkg-config</literal> is used (the actual output on
|
|
your system may be different):
|
|
<programlisting>
|
|
$ pkg-config --cflags gtk+-3.0
|
|
-pthread -I/usr/include/gtk-3.0 -I/usr/lib64/gtk-3.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12
|
|
$ pkg-config --libs gtk+-3.0
|
|
-pthread -lgtk-3 -lgdk-3 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0
|
|
</programlisting>
|
|
</para>
|
|
<para>
|
|
The simplest way to compile a program is to use the "backticks"
|
|
feature of the shell. If you enclose a command in backticks
|
|
(<emphasis>not single quotes</emphasis>), then its output will be
|
|
substituted into the command line before execution. So to compile
|
|
a GTK+ Hello, World, you would type the following:
|
|
<programlisting>
|
|
$ cc `pkg-config --cflags --libs gtk+-3.0` hello.c -o hello
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
If you want to make sure that your program doesn't use any deprecated
|
|
functions, you can define the preprocessor symbol GTK_DISABLE_DEPRECATED
|
|
by using the command line option <literal>-DGTK_DISABLE_DEPRECATED=1</literal>.
|
|
There are similar symbols GDK_DISABLE_DEPRECATED,
|
|
GDK_PIXBUF_DISABLE_DEPRECATED and G_DISABLE_DEPRECATED for GDK, GdkPixbuf and
|
|
GLib.
|
|
</para>
|
|
|
|
<para>
|
|
If you want to make sure that your program doesn't use any functions which
|
|
may be problematic in a multihead setting, you can define the preprocessor
|
|
symbol GDK_MULTIHEAD_SAFE by using the command line option
|
|
<literal>-DGTK_MULTIHEAD_SAFE=1</literal>.
|
|
</para>
|
|
|
|
<para>
|
|
Similarly, if you want to make sure that your program doesn't use any
|
|
functions which may be problematic in a multidevice setting, you can
|
|
define the preprocessor symbol GDK_MULTIDEVICE_SAFE by using the command
|
|
line option <literal>-DGTK_MULTIDEVICE_SAFE=1</literal>.
|
|
</para>
|
|
|
|
<refsect2>
|
|
<title>Useful autotools macros</title>
|
|
|
|
<para>
|
|
GTK+ provides various macros for easily checking version and backends
|
|
supported. The macros are
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>AM_PATH_GTK_3_0([minimum-version], [if-found], [if-not-found], [modules])</term>
|
|
<listitem>This macro should be used to check that GTK+ is installed
|
|
and available for compilation. The four arguments are optional, and
|
|
they are: <emphasis>minimum-version</emphasis>, the minimum version
|
|
of GTK+ required for compilation; <emphasis>if-found</emphasis>, the
|
|
action to perform if a valid version of GTK+ has been found;
|
|
<emphasis>if-not-found</emphasis>, the action to perform if a valid
|
|
version of GTK+ has not been found; <emphasis>modules</emphasis>, a
|
|
list of modules to be checked along with GTK+.</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>GTK_CHECK_BACKEND([backend-name], [if-found], [if-not-found])</term>
|
|
<listitem>This macro should be used to check if a specific backend
|
|
is supported by GTK+. The <emphasis>if-found</emphasis> and the
|
|
<emphasis>if-not-found</emphasis> arguments are optional.</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</refsect2>
|
|
|
|
</refsect1>
|
|
</refentry>
|