Empty skeleton project
This commit is contained in:
commit
deddb4b8e9
0
Makefile.am
Normal file
0
Makefile.am
Normal file
0
autogen.sh
Normal file
0
autogen.sh
Normal file
0
configure.ac
Normal file
0
configure.ac
Normal file
0
data/Makefile.am
Normal file
0
data/Makefile.am
Normal file
0
data/hello-application.desktop.in.in
Normal file
0
data/hello-application.desktop.in.in
Normal file
0
data/icons/16x16/hello-application.png
Normal file
0
data/icons/16x16/hello-application.png
Normal file
0
data/icons/22x22/hello-application.png
Normal file
0
data/icons/22x22/hello-application.png
Normal file
0
data/icons/24x24/hello-application.png
Normal file
0
data/icons/24x24/hello-application.png
Normal file
0
data/icons/256x256/hello-application.png
Normal file
0
data/icons/256x256/hello-application.png
Normal file
0
data/icons/32x32/hello-application.png
Normal file
0
data/icons/32x32/hello-application.png
Normal file
0
data/icons/48x48/hello-application.png
Normal file
0
data/icons/48x48/hello-application.png
Normal file
0
data/icons/Makefile.am
Normal file
0
data/icons/Makefile.am
Normal file
0
data/icons/hello-application.svg
Normal file
0
data/icons/hello-application.svg
Normal file
0
data/libhello-application.pc.in
Normal file
0
data/libhello-application.pc.in
Normal file
0
data/org.example.hello-application.gschema.xml
Normal file
0
data/org.example.hello-application.gschema.xml
Normal file
0
docs/Makefile.am
Normal file
0
docs/Makefile.am
Normal file
205
docs/gnome-autotools.xml
Normal file
205
docs/gnome-autotools.xml
Normal file
@ -0,0 +1,205 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
|
||||
<book>
|
||||
<bookinfo>
|
||||
<title>Using the GNU Auototools toolset for writing GNOME-related
|
||||
software</title>
|
||||
|
||||
<author>
|
||||
<firstname>Gergely</firstname>
|
||||
|
||||
<surname>Polonkai</surname>
|
||||
</author>
|
||||
|
||||
<pubdate>September 22, 2013</pubdate>
|
||||
|
||||
<abstract>
|
||||
<para>Configuring the Autotools toolset to suffice for GNOME Software
|
||||
development</para>
|
||||
</abstract>
|
||||
|
||||
<copyright>
|
||||
<year>2013</year>
|
||||
|
||||
<holder>Gergely Polonkai</holder>
|
||||
</copyright>
|
||||
|
||||
<legalnotice>
|
||||
<para>This work is distributed under a CreativeCommons Attribution-Share
|
||||
Alike 3.0 Unported license.</para>
|
||||
</legalnotice>
|
||||
</bookinfo>
|
||||
|
||||
<dedication>
|
||||
<para>I dedicate this article to all the <orgname>GNOME</orgname> Devs,
|
||||
who don't really seem to like writing documentation. I feel for them, as I
|
||||
was many times in the same shoes. I hope you get some neat documentors
|
||||
soon!</para>
|
||||
</dedication>
|
||||
|
||||
<preface>
|
||||
<title>Preface</title>
|
||||
|
||||
<para>While developing my first application for the GNOME Desktop, one of
|
||||
my greatest problems was that the use of
|
||||
<productname>Autotools</productname> is not documented for this use case.
|
||||
The GNOME people have several (somewhat) internal protocols they follow,
|
||||
and they also developed some helper M4 functions, but their use is hardly
|
||||
documented, if documented at all.</para>
|
||||
|
||||
<para>After digging through the sources of many projects, I came to a
|
||||
better understanding of <productname>Autotools</productname>, the
|
||||
freedesktop.org standards, and <productname>GNOME</productname> itself,
|
||||
and learned about application writing best practices. But most
|
||||
importantly, I came to the decision to write this tutorial, so no other
|
||||
developers will have to suffer from this problem.</para>
|
||||
</preface>
|
||||
|
||||
<preface>
|
||||
<title>Terms and Assumptions</title>
|
||||
|
||||
<para>Although I assume basic knowledge of
|
||||
<productname>Autotools</productname> throughout this document, I will try
|
||||
my best to go into the details, so even beginners will have chance to
|
||||
build good <filename>Makefile</filename>s. Also, I will use a sample
|
||||
GNOME'ish C program, <productname>HelloApplication</productname> as an
|
||||
example.</para>
|
||||
|
||||
<para>This article is not some sacred text. It contains my (independent
|
||||
developer, even independent of <orgname>GNOME</orgname> in some ways)
|
||||
knowledge of the topic. You don't have to follow every little step to
|
||||
write good software at all.</para>
|
||||
</preface>
|
||||
|
||||
<chapter>
|
||||
<title>The Big Picture</title>
|
||||
|
||||
<section>
|
||||
<title>Our application's goal</title>
|
||||
|
||||
<para>The goal of this application is two-fold. First of all, it
|
||||
displays a widget defined in a library called
|
||||
<productname>libhello-application</productname>. It does this in a neat
|
||||
little <classname>GtkWindow</classname>, with its own icon, and in a
|
||||
localized manner. You can set some preferences in the Preferences
|
||||
window, which is stored in <classname>GSettings</classname>, and if
|
||||
something is not clear, you can turn to the application's
|
||||
<productname>Yelp</productname> help files. Oh, and as
|
||||
<productname>libhello-application</productname>'s widget is pretty, we
|
||||
decided to make it available to other applications, so we also provide a
|
||||
<productname>pkgconfig</productname> definitions file, and a
|
||||
<productname>GTK-Doc</productname> documentation for that.</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Directory structure</title>
|
||||
|
||||
<para>The directory structure of our application is as follows.</para>
|
||||
|
||||
<warning>
|
||||
<para>Please note that <filename>/</filename> in this case don't refer
|
||||
to the filesystem root, but the project root!</para>
|
||||
</warning>
|
||||
|
||||
<programlisting>data/
|
||||
icons/
|
||||
16x16/
|
||||
hello-application.png
|
||||
22x22/
|
||||
hello-application.png
|
||||
24x24/
|
||||
hello-application.png
|
||||
32x32/
|
||||
hello-application.png
|
||||
48x48/
|
||||
hello-application.png
|
||||
256x256/
|
||||
hello-application.png
|
||||
hello-application.svg
|
||||
Makefile.am
|
||||
hello-application.desktop.in.in
|
||||
libhello-application.pc.in
|
||||
org.example.helloapplication.gschema.xml
|
||||
Makefile.am
|
||||
docs/
|
||||
help/
|
||||
C/
|
||||
index.page
|
||||
en_GB/
|
||||
en_GB.po
|
||||
hello-application.omf.in
|
||||
Makefile.am
|
||||
references/
|
||||
libhello-application/
|
||||
libhello-application/Makefile.am
|
||||
Makefile.am
|
||||
libhello-application/
|
||||
hello-widget.c
|
||||
hello-widget.h
|
||||
hello-widget-private.h
|
||||
Makefile.am
|
||||
po/
|
||||
LINGUAS
|
||||
POTFILES.in
|
||||
en_GB.po
|
||||
src/
|
||||
hello-app.c
|
||||
hello-app.h
|
||||
hello-preferences.c
|
||||
hello-preferences.h
|
||||
hello-settings.c
|
||||
hello-settings.h
|
||||
hello-window.c
|
||||
hello-window.h
|
||||
main.c
|
||||
Makefile.am
|
||||
README
|
||||
autogen.sh
|
||||
configure.ac</programlisting>
|
||||
|
||||
<para>Pretty crowded, huh? And after you run the
|
||||
<productname>Autotools</productname> magic, it will become much more
|
||||
crowded, trust me!</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Why so much icons?</title>
|
||||
|
||||
<para>Short answer: the <productname>freedesktop.org</productname>
|
||||
standards suggest them.</para>
|
||||
|
||||
<para>Long answer: All icons have their own functionality. For example,
|
||||
16x16 icons are for small application menus, like the one in
|
||||
<productname>WindowMaker</productname>, and it is also used by some
|
||||
window managers to decorate windows (like the one on
|
||||
<productname>Windows</productname> systems). 48x48 are the standard icon
|
||||
size for the <productname>GNOME Shell</productname> application grid.
|
||||
256x256 icons will be usually used on systems used by visually impaired
|
||||
people.</para>
|
||||
</section>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>The Source Tree</title>
|
||||
|
||||
<para>Our application is divided into two parts. The first one is
|
||||
<filename>libhello-application/</filename>, which provides
|
||||
<classname>HelloWidget</classname>.</para>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>The Build System</title>
|
||||
|
||||
<para>The base of our operations is the / directory, which is often
|
||||
referenced to as $(top_srcdir). The Makefile.am in this directory usually
|
||||
contains nothing more than a SUBDIRS variable, which will instruct make to
|
||||
recurse into those directories.</para>
|
||||
|
||||
<section>
|
||||
<title/>
|
||||
|
||||
<para/>
|
||||
</section>
|
||||
</chapter>
|
||||
</book>
|
0
docs/help/C/index.page
Normal file
0
docs/help/C/index.page
Normal file
0
docs/help/Makefile.am
Normal file
0
docs/help/Makefile.am
Normal file
0
docs/help/en_GB/en_GB.po
Normal file
0
docs/help/en_GB/en_GB.po
Normal file
0
docs/help/hello-application.omf.in
Normal file
0
docs/help/hello-application.omf.in
Normal file
0
docs/references/libhello-application/Makefile.am
Normal file
0
docs/references/libhello-application/Makefile.am
Normal file
0
libhello-application/Makefile.am
Normal file
0
libhello-application/Makefile.am
Normal file
0
libhello-application/hello-widget-private.h
Normal file
0
libhello-application/hello-widget-private.h
Normal file
0
libhello-application/hello-widget.c
Normal file
0
libhello-application/hello-widget.c
Normal file
0
libhello-application/hello-widget.h
Normal file
0
libhello-application/hello-widget.h
Normal file
0
po/LINGUAS
Normal file
0
po/LINGUAS
Normal file
0
po/POTFILES.in
Normal file
0
po/POTFILES.in
Normal file
0
po/en_GB.po
Normal file
0
po/en_GB.po
Normal file
0
src/Makefile.am
Normal file
0
src/Makefile.am
Normal file
0
src/hello-app.c
Normal file
0
src/hello-app.c
Normal file
0
src/hello-app.h
Normal file
0
src/hello-app.h
Normal file
0
src/hello-main.c
Normal file
0
src/hello-main.c
Normal file
0
src/hello-preferences.c
Normal file
0
src/hello-preferences.c
Normal file
0
src/hello-preferences.h
Normal file
0
src/hello-preferences.h
Normal file
0
src/hello-settings.c
Normal file
0
src/hello-settings.c
Normal file
0
src/hello-settings.h
Normal file
0
src/hello-settings.h
Normal file
0
src/hello-window.c
Normal file
0
src/hello-window.c
Normal file
0
src/hello-window.h
Normal file
0
src/hello-window.h
Normal file
Loading…
Reference in New Issue
Block a user