1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>
Source Tree Checklist
</title>
<meta name="GENERATOR" content=
"Modular DocBook HTML Stylesheet Version 1.45">
<link rel="HOME" title="GTK+ / Gnome Application Development"
href="ggad.html">
<link rel="UP" title="Creating Your Source Tree" href=
"cha-source.html">
<link rel="PREVIOUS" title="Creating Your Source Tree" href=
"cha-source.html">
<link rel="NEXT" title="configure.in" href="z69.html">
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink=
"#840084" alink="#0000FF">
<div class="NAVHEADER">
<table width="100%" border="0" bgcolor="#ffffff" cellpadding=
"1" cellspacing="0">
<tr>
<th colspan="4" align="center">
<font color="#000000" size="2">GTK+ / Gnome Application
Development</font>
</th>
</tr>
<tr>
<td width="25%" bgcolor="#ffffff" align="left">
<a href="cha-source.html"><font color="#0000ff" size=
"2"><b><<< Previous</b></font></a>
</td>
<td width="25%" colspan="2" bgcolor="#ffffff" align=
"center">
<font color="#0000ff" size="2"><b><a href="ggad.html">
<font color="#0000ff" size="2"><b>
Home</b></font></a></b></font>
</td>
<td width="25%" bgcolor="#ffffff" align="right">
<a href="z69.html"><font color="#0000ff" size="2"><b>
Next >>></b></font></a>
</td>
</tr>
</table>
</div>
<div class="SECT1">
<h1 class="SECT1">
<a name="Z68">Source Tree Checklist</a>
</h1>
<p>
As an initial overview, here are the important steps in
creating a skeletal Gnome source tree. If you are starting
a new program, you can simply follow this list and you
won't forget anything. The rest of this chapter explains
the checklist in more detail. It might also be helpful to
download a Gnome package or two to look at as you follow
the discussion (in particular, the "GnomeHello" source tree
is intended to illustrate a proper build setup).
</p>
<ol type="1">
<li>
<p>
Create a toplevel directory to hold all the components
of your application, including build files,
documentation, and translations.
</p>
</li>
<li>
<p>
It's often nice to create a <tt class="FILENAME">
src</tt> subdirectory of this toplevel directory to
keep source code separate from everything else.
</p>
</li>
<li>
<p>
In the toplevel directory, create <tt class="FILENAME">
AUTHORS</tt>, <tt class="FILENAME">NEWS</tt>, <tt
class="FILENAME">COPYING</tt>, and <tt class=
"FILENAME">README</tt> files. If desired, also create
an empty <tt class="FILENAME">ChangeLog</tt>.
</p>
</li>
<li>
<p>
Write a <tt class="FILENAME">configure.in</tt>; the
main purpose of <tt class="FILENAME">configure.in</tt>
is to determine which compiler, compiler flags, and
linker flags to use. <tt class="FILENAME">
configure.in</tt> can also <span class="STRUCTNAME">
#define</span> symbols to reflect features of the
current platform, placing these definitions in the
automatically-generated file <tt class="FILENAME">
config.h</tt>.
</p>
</li>
<li>
<p>
Write <tt class="FILENAME">acconfig.h</tt>, which is a
template for <tt class="FILENAME">config.h.in</tt>.
This file should <span class="STRUCTNAME">#undef</span>
each symbol you will potentially <span class=
"STRUCTNAME">#define</span> in <tt class="FILENAME">
config.h</tt>. The <tt class="APPLICATION">
autoheader</tt> program creates <tt class="FILENAME">
config.h.in</tt> based on <tt class="FILENAME">
acconfig.h</tt>, and <tt class="APPLICATION">
autoconf</tt> creates <tt class="FILENAME">
config.h</tt>. <tt class="APPLICATION">autoheader</tt>
comes with <tt class="APPLICATION">autoconf</tt>.
</p>
</li>
<li>
<p>
Create an empty file, <tt class="FILENAME">
stamp.h.in</tt>; this is used by the <span class=
"SYMBOL">AM_CONFIG_HEADER</span> macro in <tt class=
"FILENAME">configure.in</tt>.
</p>
</li>
<li>
<p>
Write a <tt class="FILENAME">Makefile.am</tt> in the
toplevel directory listing each subdirectory which
contains source code; in each subdirectory, also write
a <tt class="FILENAME">Makefile.am</tt>.
</p>
</li>
<li>
<p>
Run the <tt class="APPLICATION">gettextize</tt> program
that comes with the <tt class="APPLICATION">
gettext</tt> package. This creates the <tt class=
"APPLICATION">intl</tt> and <tt class="APPLICATION">
po</tt> directories, needed for internationalization
(<tt class="APPLICATION">gettextize</tt> is documented
in the <tt class="APPLICATION">gettext</tt> manual).
The <tt class="FILENAME">intl</tt> contains the GNU <tt
class="APPLICATION">gettext</tt> source code; if users
compiling the program do not have <tt class=
"APPLICATION">gettext</tt>, they can pass the <tt
class="APPLICATION">--with-included-gettext</tt> option
to <tt class="FILENAME">configure</tt> to automatically
compile a static version in the <tt class="FILENAME">
intl</tt> directory. The <tt class="FILENAME">po</tt>
directory holds the translation files; <tt class=
"APPLICATION">gettextize</tt> will also create a file
called <tt class="FILENAME">po/Makefile.in.in</tt>,
used to build the translations.
</p>
</li>
<li>
<p>
Create a file called <tt class="FILENAME">
po/POTFILES.in</tt> listing source files which should
be scanned for strings to translate. <tt class=
"FILENAME">POTFILES.in</tt> can be empty at first.
</p>
</li>
<li>
<p>
Copy <tt class="FILENAME">autogen.sh</tt> and the <tt
class="FILENAME">macros</tt> directory from another
Gnome module. You must modify <tt class="FILENAME">
autogen.sh</tt> to reflect the name of your package.
Running <tt class="FILENAME">autogen.sh</tt> will
invoke <tt class="APPLICATION">libtoolize</tt>, <tt
class="APPLICATION">aclocal</tt>, <tt class=
"APPLICATION">autoheader</tt>, <tt class="APPLICATION">
automake</tt>, and <tt class="APPLICATION">
autoconf</tt>.
</p>
</li>
<li>
<p>
<tt class="FILENAME">autogen.sh</tt> invokes <tt class=
"APPLICATION">automake</tt> with the <tt class=
"APPLICATION">--add-missing</tt> argument. This will
add some files, such as <tt class="FILENAME">
INSTALL</tt> with generic installation instructions.
You can (and should) edit <tt class="FILENAME">
INSTALL</tt> to include any specific instructions for
your application. <tt class="FILENAME">autogen.sh</tt>
will also create a <tt class="FILENAME">Makefile</tt>
in each directory.
</p>
</li>
</ol>
</div>
<div class="NAVFOOTER">
<br>
<br>
<table width="100%" border="0" bgcolor="#ffffff" cellpadding=
"1" cellspacing="0">
<tr>
<td width="25%" bgcolor="#ffffff" align="left">
<a href="cha-source.html"><font color="#0000ff" size=
"2"><b><<< Previous</b></font></a>
</td>
<td width="25%" colspan="2" bgcolor="#ffffff" align=
"center">
<font color="#0000ff" size="2"><b><a href="ggad.html">
<font color="#0000ff" size="2"><b>
Home</b></font></a></b></font>
</td>
<td width="25%" bgcolor="#ffffff" align="right">
<a href="z69.html"><font color="#0000ff" size="2"><b>
Next >>></b></font></a>
</td>
</tr>
<tr>
<td colspan="2" align="left">
<font color="#000000" size="2"><b>Creating Your Source
Tree</b></font>
</td>
<td colspan="2" align="right">
<font color="#000000" size="2"><b><tt class="FILENAME">
configure.in</tt></b></font>
</td>
</tr>
</table>
</div>
</body>
</html>
|