154 lines
7.0 KiB
HTML
154 lines
7.0 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||
<html>
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||
<title>Compiling GTK+ Applications: GTK+ 3 Reference Manual</title>
|
||
<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
|
||
<link rel="home" href="index.html" title="GTK+ 3 Reference Manual">
|
||
<link rel="up" href="platform-support.html" title="Part VII. GTK+ Platform Support">
|
||
<link rel="prev" href="gtk-building.html" title="Compiling the GTK+ libraries">
|
||
<link rel="next" href="gtk-running.html" title="Running GTK+ Applications">
|
||
<meta name="generator" content="GTK-Doc V1.29 (XML mode)">
|
||
<link rel="stylesheet" href="style.css" type="text/css">
|
||
</head>
|
||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
|
||
<td width="100%" align="left" class="shortcuts"></td>
|
||
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
|
||
<td><a accesskey="u" href="platform-support.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
|
||
<td><a accesskey="p" href="gtk-building.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
|
||
<td><a accesskey="n" href="gtk-running.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
|
||
</tr></table>
|
||
<div class="refentry">
|
||
<a name="gtk-compiling"></a><div class="titlepage"></div>
|
||
<div class="refnamediv"><table width="100%"><tr>
|
||
<td valign="top">
|
||
<h2><span class="refentrytitle">Compiling GTK+ Applications</span></h2>
|
||
<p>Compiling GTK+ Applications —
|
||
How to compile your GTK+ application
|
||
</p>
|
||
</td>
|
||
<td class="gallery_image" valign="top" align="right"></td>
|
||
</tr></table></div>
|
||
<div class="refsect1">
|
||
<a name="id-1.8.3.3"></a><h2>Compiling GTK+ Applications on UNIX</h2>
|
||
<p>
|
||
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
|
||
<code class="literal">pkg-config</code> utility.
|
||
</p>
|
||
<p>
|
||
The following interactive shell session demonstrates how
|
||
<code class="literal">pkg-config</code> is used (the actual output on
|
||
your system may be different):
|
||
</p>
|
||
<pre class="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
|
||
</pre>
|
||
<p>
|
||
</p>
|
||
<p>
|
||
The simplest way to compile a program is to use the "backticks"
|
||
feature of the shell. If you enclose a command in backticks
|
||
(<span class="emphasis"><em>not single quotes</em></span>), then its output will be
|
||
substituted into the command line before execution. So to compile
|
||
a GTK+ Hello, World, you would type the following:
|
||
</p>
|
||
<pre class="programlisting">
|
||
$ cc `pkg-config --cflags gtk+-3.0` hello.c -o hello `pkg-config --libs gtk+-3.0`
|
||
</pre>
|
||
<p>
|
||
</p>
|
||
<p>
|
||
Deprecated GTK+ functions are annotated to make the compiler
|
||
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
|
||
symbol <code class="literal">GDK_DISABLE_DEPRECATION_WARNINGS</code> by using the commandline
|
||
option <code class="literal">-DGDK_DISABLE_DEPRECATION_WARNINGS</code>
|
||
</p>
|
||
<p>
|
||
GTK+ deprecation annotations are versioned; by defining the
|
||
macros <code class="literal">GDK_VERSION_MIN_REQUIRED</code> and <code class="literal">GDK_VERSION_MAX_ALLOWED</code>,
|
||
you can specify the range of GTK+ versions whose API you want
|
||
to use. APIs that were deprecated before or introduced after
|
||
this range will trigger compiler warnings.
|
||
</p>
|
||
<p>
|
||
Here is how you would compile hello.c if you want to allow it
|
||
to use symbols that were not deprecated in 3.2:
|
||
</p>
|
||
<pre class="programlisting">
|
||
$ cc `pkg-config --cflags gtk+-3.0` -DGDK_VERSION_MIN_REQIRED=GDK_VERSION_3_2 hello.c -o hello `pkg-config --libs gtk+-3.0`
|
||
</pre>
|
||
<p>
|
||
</p>
|
||
<p>
|
||
And here is how you would compile hello.c if you don't want
|
||
it to use any symbols that were introduced after 3.4:
|
||
</p>
|
||
<pre class="programlisting">
|
||
$ cc `pkg-config --cflags gtk+-3.0` -DGDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_4 hello.c -o hello `pkg-config --libs gtk+-3.0`
|
||
</pre>
|
||
<p>
|
||
</p>
|
||
<p>
|
||
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 <code class="literal">-DGTK_DISABLE_DEPRECATED</code>.
|
||
There are similar symbols GDK_DISABLE_DEPRECATED,
|
||
GDK_PIXBUF_DISABLE_DEPRECATED and G_DISABLE_DEPRECATED for GDK, GdkPixbuf and
|
||
GLib.
|
||
</p>
|
||
<p>
|
||
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 <code class="literal">-DGTK_MULTIDEVICE_SAFE=1</code>.
|
||
</p>
|
||
<div class="refsect2">
|
||
<a name="id-1.8.3.3.11"></a><h3>Useful autotools macros</h3>
|
||
<p>
|
||
GTK+ provides various macros for easily checking version and backends
|
||
supported. The macros are
|
||
</p>
|
||
<div class="variablelist"><table border="0" class="variablelist">
|
||
<colgroup>
|
||
<col align="left" valign="top">
|
||
<col>
|
||
</colgroup>
|
||
<tbody>
|
||
<tr>
|
||
<td><p><span class="term">AM_PATH_GTK_3_0([minimum-version], [if-found], [if-not-found], [modules])</span></p></td>
|
||
<td>This macro should be used to check that GTK+ is installed
|
||
and available for compilation. The four arguments are optional, and
|
||
they are: <span class="emphasis"><em>minimum-version</em></span>, the minimum version
|
||
of GTK+ required for compilation; <span class="emphasis"><em>if-found</em></span>, the
|
||
action to perform if a valid version of GTK+ has been found;
|
||
<span class="emphasis"><em>if-not-found</em></span>, the action to perform if a valid
|
||
version of GTK+ has not been found; <span class="emphasis"><em>modules</em></span>, a
|
||
list of modules to be checked along with GTK+.</td>
|
||
</tr>
|
||
<tr>
|
||
<td><p><span class="term">GTK_CHECK_BACKEND([backend-name], [minimum-version], [if-found], [if-not-found])</span></p></td>
|
||
<td>This macro should be used to check if a specific backend
|
||
is supported by GTK+. The <span class="emphasis"><em>minimum-version</em></span>,
|
||
<span class="emphasis"><em>if-found</em></span> and <span class="emphasis"><em>if-not-found</em></span>
|
||
arguments are optional.</td>
|
||
</tr>
|
||
</tbody>
|
||
</table></div>
|
||
<p>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="footer">
|
||
<hr>Generated by GTK-Doc V1.29</div>
|
||
</body>
|
||
</html> |