2008-07-10 03:27:56 +00:00
|
|
|
<?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" [
|
|
|
|
]>
|
2011-01-15 00:35:34 +00:00
|
|
|
<refentry id="gtk-compiling">
|
2001-02-09 06:14:34 +00:00
|
|
|
<refmeta>
|
2019-02-05 09:14:31 +00:00
|
|
|
<refentrytitle>Compiling GTK Applications</refentrytitle>
|
2001-02-09 06:14:34 +00:00
|
|
|
<manvolnum>3</manvolnum>
|
|
|
|
<refmiscinfo>GTK Library</refmiscinfo>
|
|
|
|
</refmeta>
|
|
|
|
|
|
|
|
<refnamediv>
|
2019-02-05 09:14:31 +00:00
|
|
|
<refname>Compiling GTK Applications</refname>
|
2001-02-09 06:14:34 +00:00
|
|
|
<refpurpose>
|
2019-02-05 09:14:31 +00:00
|
|
|
How to compile your GTK application
|
2001-02-09 06:14:34 +00:00
|
|
|
</refpurpose>
|
|
|
|
</refnamediv>
|
|
|
|
|
|
|
|
<refsect1>
|
2019-02-05 09:14:31 +00:00
|
|
|
<title>Compiling GTK Applications on UNIX</title>
|
2001-02-09 06:14:34 +00:00
|
|
|
|
|
|
|
<para>
|
2019-02-05 09:14:31 +00:00
|
|
|
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
|
2001-09-08 04:39:53 +00:00
|
|
|
<literal>pkg-config</literal> utility.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
The following interactive shell session demonstrates how
|
2010-06-03 05:09:53 +00:00
|
|
|
<literal>pkg-config</literal> is used (the actual output on
|
2005-05-20 14:33:38 +00:00
|
|
|
your system may be different):
|
2001-09-08 04:39:53 +00:00
|
|
|
<programlisting>
|
2019-02-05 09:14:31 +00:00
|
|
|
$ pkg-config --cflags gtk4
|
2016-10-07 18:05:57 +00:00
|
|
|
-pthread -I/usr/include/gtk-4.0 -I/usr/lib64/gtk-4.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
|
2019-02-05 09:14:31 +00:00
|
|
|
$ pkg-config --libs gtk4
|
2016-10-07 18:05:57 +00:00
|
|
|
-pthread -lgtk-4 -lgdk-4 -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
|
2001-09-08 04:39:53 +00:00
|
|
|
</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
|
2010-06-03 05:09:53 +00:00
|
|
|
substituted into the command line before execution. So to compile
|
2019-02-05 09:14:31 +00:00
|
|
|
a GTK Hello, World, you would type the following:
|
2001-09-08 04:39:53 +00:00
|
|
|
<programlisting>
|
2019-02-05 09:14:31 +00:00
|
|
|
$ cc `pkg-config --cflags gtk4` hello.c -o hello `pkg-config --libs gtk4`
|
2001-09-08 04:39:53 +00:00
|
|
|
</programlisting>
|
|
|
|
</para>
|
2001-02-09 06:14:34 +00:00
|
|
|
|
2003-02-01 01:19:30 +00:00
|
|
|
<para>
|
2019-02-05 09:14:31 +00:00
|
|
|
Deprecated GTK functions are annotated to make the compiler
|
2011-11-10 03:08:43 +00:00
|
|
|
emit warnings when they are used (e.g. with gcc, you need to use
|
|
|
|
the -Wdeprecated-declarations option). If these warnings are
|
|
|
|
problematic, they can be turned off by defining the preprocessor
|
2012-02-27 12:56:29 +00:00
|
|
|
symbol %GDK_DISABLE_DEPRECATION_WARNINGS by using the commandline
|
2011-11-10 03:08:43 +00:00
|
|
|
option <literal>-DGDK_DISABLE_DEPRECATION_WARNINGS</literal>
|
|
|
|
</para>
|
|
|
|
|
2012-02-27 12:56:29 +00:00
|
|
|
<para>
|
2019-02-05 09:14:31 +00:00
|
|
|
GTK deprecation annotations are versioned; by defining the
|
2012-02-27 12:56:29 +00:00
|
|
|
macros %GDK_VERSION_MIN_REQUIRED and %GDK_VERSION_MAX_ALLOWED,
|
2019-02-05 09:14:31 +00:00
|
|
|
you can specify the range of GTK versions whose API you want
|
2012-02-27 12:56:29 +00:00
|
|
|
to use. APIs that were deprecated before or introduced after
|
|
|
|
this range will trigger compiler warnings.
|
|
|
|
</para>
|
|
|
|
|
2012-08-02 23:49:56 +00:00
|
|
|
<para>
|
|
|
|
Here is how you would compile hello.c if you want to allow it
|
2019-02-05 09:14:31 +00:00
|
|
|
to use symbols that were not deprecated in 4.2:
|
2012-08-02 23:49:56 +00:00
|
|
|
<programlisting>
|
2019-02-05 09:14:31 +00:00
|
|
|
$ cc `pkg-config --cflags gtk4` -DGDK_VERSION_MIN_REQIRED=GDK_VERSION_4_2 hello.c -o hello `pkg-config --libs gtk4`
|
2012-08-02 23:49:56 +00:00
|
|
|
</programlisting>
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
And here is how you would compile hello.c if you don't want
|
2019-02-05 09:14:31 +00:00
|
|
|
it to use any symbols that were introduced after 4.2:
|
2012-08-02 23:49:56 +00:00
|
|
|
<programlisting>
|
2019-02-05 09:14:31 +00:00
|
|
|
$ cc `pkg-config --cflags gtk4` -DGDK_VERSION_MAX_ALLOWED=GDK_VERSION_4_2 hello.c -o hello `pkg-config --libs gtk4`
|
2012-08-02 23:49:56 +00:00
|
|
|
</programlisting>
|
|
|
|
</para>
|
|
|
|
|
2011-11-10 03:08:43 +00:00
|
|
|
<para>
|
|
|
|
The older deprecation mechanism of hiding deprecated interfaces
|
|
|
|
entirely from the compiler by using the preprocessor symbol
|
|
|
|
GTK_DISABLE_DEPRECATED is still used for deprecated macros,
|
|
|
|
enumeration values, etc. To detect uses of these in your code,
|
|
|
|
use the commandline option <literal>-DGTK_DISABLE_DEPRECATED</literal>.
|
2010-06-03 05:09:53 +00:00
|
|
|
There are similar symbols GDK_DISABLE_DEPRECATED,
|
2003-02-01 01:19:30 +00:00
|
|
|
GDK_PIXBUF_DISABLE_DEPRECATED and G_DISABLE_DEPRECATED for GDK, GdkPixbuf and
|
2010-06-03 05:09:53 +00:00
|
|
|
GLib.
|
2003-02-01 01:19:30 +00:00
|
|
|
</para>
|
|
|
|
|
|
|
|
</refsect1>
|
2001-02-09 06:14:34 +00:00
|
|
|
</refentry>
|