671 lines
20 KiB
XML
671 lines
20 KiB
XML
<?xml version="1.0" encoding="iso-8859-2"?>
|
|
<!-- Copyright (c) 1999 Neil Blakey-Milner, All rights reserved.
|
|
|
|
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
|
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
|
modification, are permitted provided that the following conditions
|
|
are met:
|
|
|
|
1. Redistributions of source code (SGML DocBook) must retain the above
|
|
copyright notice, this list of conditions and the following
|
|
disclaimer as the first lines of this file unmodified.
|
|
|
|
2. Redistributions in compiled form (transformed to other DTDs,
|
|
converted to PDF, PostScript, RTF and other formats) must reproduce
|
|
the above copyright notice, this list of conditions and the
|
|
following disclaimer in the documentation and/or other materials
|
|
provided with the distribution.
|
|
|
|
THIS DOCUMENTATION IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
|
|
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
|
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
|
POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
$FreeBSD$
|
|
-->
|
|
<!-- The FreeBSD Hungarian Documentation Project
|
|
Translated by: PALI, Gabor <pgj@FreeBSD.org>
|
|
%SOURCE% en_US.ISO8859-1/books/fdp-primer/doc-build/chapter.xml
|
|
%SRCID% 1.16
|
|
-->
|
|
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="doc-build" xml:lang="hu">
|
|
<title>A dokumentáció
|
|
elõállításának folyamata</title>
|
|
|
|
<para>Ebben a fejezetben szeretnénk pontosan tisztázni
|
|
<emphasis>hogyan szervezõdik a dokumentáció
|
|
elõállításának folyamata</emphasis>
|
|
és <emphasis>hogyan tudunk ebbe
|
|
beavatkozni</emphasis>.</para>
|
|
|
|
<para>A fejezet elolvasása során
|
|
megismerjük:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>az <link linkend="tools">SGML eszközeirõl
|
|
szóló fejezetben</link> említetteken
|
|
túl a &os; Dokumentációs Projekt keretein
|
|
belül készített dokumentáció
|
|
különbözõ változatainak
|
|
elõállításához mire van
|
|
még szükségünk;</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>a dokumentumokhoz tartozó
|
|
<filename>Makefile</filename> állományokban
|
|
szereplõ <command>make</command>
|
|
utasításokat, valamint a hivatkozott
|
|
<filename>doc.project.mk</filename> vázlatos
|
|
felépítését;</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>további <command>make</command>
|
|
változókon és célokon keresztül
|
|
miként tudjuk testreszabni a dokumentáció
|
|
különbözõ változatainak
|
|
elõállítási folyamatát.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<sect1 xml:id="doc-build-toolset">
|
|
<title>A &os; dokumentáció
|
|
elõállításának
|
|
eszközei</title>
|
|
|
|
<para>Munkánk folyamán az itt felsorolt
|
|
eszközök állnak rendelkezésünkre.
|
|
Használjuk ki az általuk nyújtott
|
|
lehetõségeket, amennyire csak tudjuk.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Az elsõdleges eszköz maga a
|
|
<command>make</command> parancs, pontosabban a
|
|
<application>Berkeley Make</application>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Csomagokat a &os; alaprendszerében
|
|
megtalálható <command>pkg_create</command>
|
|
programmal tudunk készíteni. Ha nem &os; alatt
|
|
dolgozunk, akkor vagy csomagok nélkül kell
|
|
dolgoznunk, vagy magunknak kell ezeket
|
|
elkészítenünk.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>A <command>gzip</command>
|
|
segítségével lehet az
|
|
elõállított dokumentumok
|
|
tömörített változatát
|
|
elkészíteni. Emellett még a
|
|
<command>bzip2</command> és <command>zip</command>
|
|
típusú tömörítés is
|
|
támogatott. A <command>tar</command> programot is
|
|
támogatjuk, a csomagok
|
|
készítéséhez kell.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>A dokumentáció
|
|
telepítésének elfogadott eszköze az
|
|
<command>install</command> program. Természetesen
|
|
léteznek egyéb megoldások is.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<note>
|
|
<para>Nem valószínû, hogy ez az utolsó
|
|
két eszközt ne lenne elérhetõ a
|
|
rendszerünkön, csupán a teljesség
|
|
kedvéért említettük meg ezeket.</para>
|
|
</note>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="doc-build-makefiles">
|
|
<title>A dokumentációt tároló
|
|
könyvtárban található
|
|
<filename>Makefile</filename> állományok</title>
|
|
|
|
<para>A &os; Dokumentációs Projekt által
|
|
használt könyvtárakban megtalálható
|
|
<filename>Makefile</filename> állományoknak
|
|
három típusa létezik:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Az <link linkend="sub-make">alkönyvtári
|
|
<filename>Makefile</filename> állományok</link>
|
|
egyszerûen csak továbbadják a parancsokat
|
|
az alkönyvtáraiknak.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>A <link linkend="doc-make">dokumentumokra vonatkozó
|
|
<filename>Makefile</filename> állományok</link>
|
|
írják le, hogy milyen dokumentumokat kellene az
|
|
adott könyvtárban
|
|
elõállítani.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Az <link linkend="make-includes"><filename>.mk</filename>
|
|
állományok</link> segítik valamilyen
|
|
formában a dokumentumok
|
|
elõállítását. Többnyire
|
|
<filename>doc.xxx.mk</filename>
|
|
névvel láthatóak.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<sect2 xml:id="sub-make">
|
|
<title>Az alkönyvtári <filename>Makefile</filename>
|
|
állományok</title>
|
|
|
|
<para>Ezek a típusú <filename>Makefile</filename>
|
|
állományok általában a
|
|
következõ alakúak:</para>
|
|
|
|
<programlisting>SUBDIR =articles
|
|
SUBDIR+=books
|
|
|
|
COMPAT_SYMLINK = en
|
|
|
|
DOC_PREFIX?= ${.CURDIR}/..
|
|
.include "${DOC_PREFIX}/share/mk/doc.project.mk"</programlisting>
|
|
|
|
<para>Röviden összefoglalva: az elsõ négy
|
|
nem üres sorban ún. <command>make</command>
|
|
változókat definiálunk. Ezek rendre a
|
|
<varname>SUBDIR</varname>, <varname>COMPAT_SYMLINK</varname>
|
|
és <varname>DOC_PREFIX</varname>.</para>
|
|
|
|
<para>Az elsõ <varname>SUBDIR</varname> sornál,
|
|
illetve a <varname>COMPAT_SYMLINK</varname> sorában
|
|
láthatjuk hogyan kell egy új értéket
|
|
beállítani egy ilyen
|
|
változónak.</para>
|
|
|
|
<para>A második <varname>SUBDIR</varname> sorban azt
|
|
láthatjuk, hogyan tudunk a változó
|
|
aktuális értékéhez
|
|
továbbiakat hozzáfûzni. Ebben az esetben
|
|
tehát az utasítás
|
|
végrehajtása után a
|
|
<varname>SUBDIR</varname> értéke <literal>articles
|
|
books</literal> lesz.</para>
|
|
|
|
<para>A <varname>DOC_PREFIX</varname> esetében pedig olyan
|
|
értékadást figyelhetünk meg, amelyik
|
|
csak akkor hajtódik végre ténylegesen, ha a
|
|
változónak addig még nem volt
|
|
értéke. Ez olyankor tud kapóra jönni,
|
|
amikor a <varname>DOC_PREFIX</varname> nem pontosan az, amire a
|
|
<filename>Makefile</filename> számít — a
|
|
felhasználó ekkor meg tudja adni a helyes
|
|
értéket.</para>
|
|
|
|
<para>Ez így együttesen tehát mit is jelent? A
|
|
<varname>SUBDIR</varname> összefoglalja azokat a
|
|
könyvtárakat, amelyekben a dokumentumok
|
|
elõállításának
|
|
folyamatának folytatódnia kell majd.</para>
|
|
|
|
<para>A <varname>COMPAT_SYMLINK</varname> a kompatibilitás
|
|
céljából létrehozott szimbolikus
|
|
linkekre vonatkozik, amelyek (valamilyen csoda folytán)
|
|
az adott nyelv hivatalos kódolására
|
|
mutatnak (tehát például a
|
|
<filename>doc/en</filename> a
|
|
<filename>en_US.ISO8859-1</filename>
|
|
könyvtárra).</para>
|
|
|
|
<para>A <varname>DOC_PREFIX</varname> a &os;
|
|
Dokumentációs Projekt
|
|
fõkönyvtárához vezetõ utat adja
|
|
meg. Ezt nem mindig egyszerû megtalálni,
|
|
ezért a rugalmasság kedvéért
|
|
könnyedén felül is definiálható.
|
|
A <varname>.CURDIR</varname> a <command>make</command> egyik
|
|
saját belsõ változója, amelyben az
|
|
aktuális könyvtár elérési
|
|
útját tárolja.</para>
|
|
|
|
<para>Végül az utolsó sorban a &os;
|
|
Dokumentációs Projekt összes
|
|
<filename>Makefile</filename> állományára
|
|
vonatkozó, rendszerszintû
|
|
<filename>doc.project.mk</filename> állományra
|
|
hivatkozunk, amelyen keresztül az iménti
|
|
változókból épül fel a
|
|
dokumentumok elõállításának
|
|
pontos menete.</para>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="doc-make">
|
|
<title>A dokumentumokra vonatkozó
|
|
<filename>Makefile</filename> állományok</title>
|
|
|
|
<para>Ezekben a <filename>Makefile</filename>
|
|
állományokban az adott könyvtárban
|
|
található dokumentumok
|
|
elõállítását
|
|
leíró különbözõ
|
|
<command>make</command> változók
|
|
szerepelnek.</para>
|
|
|
|
<para>Lássunk erre egy példát:</para>
|
|
|
|
<programlisting>MAINTAINER=pgj@FreeBSD.org
|
|
|
|
DOC?= book
|
|
|
|
FORMATS?= html-split html
|
|
|
|
INSTALL_COMPRESSED?= gz
|
|
INSTALL_ONLY_COMPRESSED?=
|
|
|
|
# Az SGML forrás
|
|
SRCS= book.xml
|
|
|
|
DOC_PREFIX?= ${.CURDIR}/../../..
|
|
|
|
.include "$(DOC_PREFIX)/share/mk/docproj.docbook.mk"</programlisting>
|
|
|
|
<para>A <varname>MAINTAINER</varname> változó nagyon
|
|
fontos. A &os; Dokumentációs Projekten belül
|
|
ezen a változón keresztül jelezhetjük a
|
|
dokumentum birtoklását, vagyis
|
|
karbantartási kötelezettségünket.</para>
|
|
|
|
<para>A <varname>DOC</varname> hivatkozik (az
|
|
<filename>.xml</filename> kiterjesztés
|
|
nélkül) az adott könyvtárban
|
|
található dokumentum fõ
|
|
forrására. Emellett az <varname>SRCS</varname>
|
|
változóban kell összefoglalnunk a
|
|
dokumentumot alkotó források neveit. Ebben
|
|
érdemes megadni minden olyan állományt,
|
|
amelynek megváltozása esetén újra
|
|
elõ kell állítani az érintett
|
|
dokumentumot.</para>
|
|
|
|
<para>A <varname>FORMATS</varname>
|
|
segítségével definiáljuk a dokumentum
|
|
alapértelmezetten elõállítandó
|
|
formátumait. A <varname>INSTALL_COMPRESSED</varname>
|
|
változóban a dokumentum
|
|
elkészítésekor felhasználandó
|
|
tömörítési formákat adhatjuk meg.
|
|
A <varname>INSTALL_ONLY_COMPRESSED</varname>
|
|
változó alapból üres, de ha adunk neki
|
|
valamilyen egyéb értéket, akkor a
|
|
dokumentumoknak csak a tömörített
|
|
változata fog elkészülni.</para>
|
|
|
|
<note>
|
|
<para>A változók feltételes
|
|
értékadásáról már
|
|
volt szó <link linkend="sub-make">az elõzõ
|
|
szakaszban</link>.</para>
|
|
</note>
|
|
|
|
<para>A <varname>DOC_PREFIX</varname> változó
|
|
és az <literal>.include</literal> utasítás a
|
|
korábbiak alapján már ismerõs
|
|
lehet.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="make-includes">
|
|
<title>A &os; Dokumentációs Projekt
|
|
<filename>.mk</filename> állományai</title>
|
|
|
|
<para>Ezek az állományok legjobban talán
|
|
önmagukon keresztül mutathatóak be. A
|
|
következõ rendszerszintû <filename>.mk</filename>
|
|
állományokat használjuk a &os;
|
|
Dokumentációs Projektben:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>A <filename>doc.project.mk</filename> a központi
|
|
<filename>.mk</filename> állomány, amely
|
|
szükség szerint hivatkozik az összes
|
|
többi <filename>.mk</filename>
|
|
állományra.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Az elõállítás és a
|
|
telepítés során a
|
|
<filename>doc.subdir.mk</filename> felelõs a dokumentumokat
|
|
tároló könyvtárak
|
|
bejárásért.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>A <filename>doc.install.mk</filename> tartalmazza a
|
|
karbantartóval és a telepítéssel
|
|
kapcsolatos változókat.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>A <filename>doc.docbook.mk</filename>
|
|
állomány csak akkor kerül
|
|
feldolgozásra, ha a <varname>DOCFORMAT</varname>
|
|
értéke <literal>docbook</literal> és a
|
|
<varname>DOC</varname> változónak van
|
|
értéke.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<sect2>
|
|
<title>A <filename>doc.project.mk</filename>
|
|
állomány</title>
|
|
|
|
<para>Nézzünk bele:</para>
|
|
|
|
<programlisting>DOCFORMAT?= docbook
|
|
MAINTAINER?= doc@FreeBSD.org
|
|
|
|
PREFIX?= /usr/local
|
|
PRI_LANG?= en_US.ISO8859-1
|
|
|
|
.if defined(DOC)
|
|
.if ${DOCFORMAT} == "docbook"
|
|
.include "doc.docbook.mk"
|
|
.endif
|
|
.endif
|
|
|
|
.include "doc.subdir.mk"
|
|
.include "doc.install.mk"</programlisting>
|
|
|
|
<sect3>
|
|
<title>Változók</title>
|
|
|
|
<para>Ha nem állítjuk be a dokumentum
|
|
<filename>Makefile</filename>
|
|
állományában, akkor a
|
|
<varname>DOCFORMAT</varname> és a
|
|
<varname>MAINTAINER</varname> változók ezen a
|
|
helyen kapnak értéket.</para>
|
|
|
|
<para>A <varname>PREFIX</varname> adja azt a
|
|
könyvtárat, amelyen belül
|
|
elérhetõek <link linkend="tools">a
|
|
dokumentáció
|
|
elõállításához
|
|
szükséges eszközök</link>.
|
|
A csomagok és portok átlagos használata
|
|
esetén ez a <filename>/usr/local</filename>.</para>
|
|
|
|
<para>A <varname>PRI_LANG</varname> adja meg azt a nyelvet
|
|
és kódolást, amely a
|
|
dokumentációt olvasó
|
|
felhasználó számára
|
|
elsõdlegesként leginkább elfogadott.
|
|
Alapértelmezés szerint ez az amerikai
|
|
angol.</para>
|
|
|
|
<note>
|
|
<para>A <varname>PRI_LANG</varname> változó
|
|
semmilyen hatással nincs a dokumentumok
|
|
elõállítására.
|
|
Egyedül a &os; dokumentáció
|
|
telepítésekor a leggyakrabban hivatkozott
|
|
dokumentumokhoz létrehozandó szimbolikus
|
|
linkek készítésénel van
|
|
szerepe.</para>
|
|
</note>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Elágazások</title>
|
|
|
|
<para>A <literal>.if defined(DOC)</literal> sorban a
|
|
<filename>Makefile</filename> állományokban
|
|
megadható elágazásokra láthatunk
|
|
példát. Hasonlóan más
|
|
programokhoz, a <filename>Makefile</filename>
|
|
mûködését tudjuk meghatározni
|
|
egy logikai kifejezés
|
|
igazságértéktõl függõen.
|
|
Ebben a kifejezésben a <literal>defined</literal>
|
|
függvény, amely megadja, hogy a
|
|
paramétereként megadott változó
|
|
definiált-e.</para>
|
|
|
|
<para>A következõ elágazásban, vagyis az
|
|
<literal>.if ${DOCFORMAT} == "docbook"</literal>
|
|
utasításban azt vizsgáljuk meg, hogy a
|
|
<varname>DOCFORMAT</varname> változó
|
|
értéke <literal>"docbook"</literal> vagy sem.
|
|
Amennyiben a válasz erre igen (vagyis
|
|
<quote>igaz</quote>), beemeljük a
|
|
<filename>doc.docbook.mk</filename> tartalmát.</para>
|
|
|
|
<para>Az elõbb említett két
|
|
elágazást rendre az <literal>.endif</literal>
|
|
kulcsszóval zárjuk le.</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>A <filename>doc.subdir.mk</filename>
|
|
állomány</title>
|
|
|
|
<para>Ez az állomány már
|
|
túlságosan nagy ahhoz, hogy a fejezeten belül
|
|
könnyen ki lehessen elemezni. Ezért az
|
|
elõzõ szakaszok alapján a részleteket a
|
|
kedves Olvasóra bízzuk, ehhez adunk még itt
|
|
némi segítséget.</para>
|
|
|
|
<sect3>
|
|
<title>Változók</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>A <varname>SUBDIR</varname> tartalmazza azokat az
|
|
alkönyvtárakat, amelyeket a feldolgozás
|
|
során be kell járnunk.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>A <varname>ROOT_SYMLINKS</varname> a
|
|
dokumentáció
|
|
fõkönyvtárából
|
|
szimbolikusan linkelendõ könyvtárak
|
|
neveit adja meg, amennyiben az adott nyelv (a
|
|
<varname>PRI_LANG</varname> változó szerint)
|
|
az elsõdleges.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>A <varname>COMPAT_SYMLINK</varname>
|
|
változót már korábban bemutattuk
|
|
<link linkend="sub-make">az alkönyvtári
|
|
<filename>Makefile</filename>
|
|
állományok</link> címû
|
|
szakaszban.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Célok és makrók</title>
|
|
|
|
<para>A függõségi viszonyokat
|
|
<literal>cél:
|
|
függõség1
|
|
függõség2 ...</literal>
|
|
formában írjuk fel, ahol így megmondjuk,
|
|
hogy a <literal>cél</literal>
|
|
létrehozásához elõször milyen
|
|
elemeknek kell létezniük. Ezeket nevezzük
|
|
függõségeknek.</para>
|
|
|
|
<para>A függõségi viszony megadása alatt
|
|
lehetõségünk van részletezni a
|
|
függõségekbõl a cél
|
|
elõállításához
|
|
szükséges utasításokat. Ezt akkor
|
|
kell megtenni, ha a cél és a
|
|
függõségek közti
|
|
átalakítást elõzõleg még
|
|
nem definiáltuk, vagy ha az adott esetben az
|
|
átalakítás eltér a
|
|
korábbiaktól.</para>
|
|
|
|
<para>A <literal>.USE</literal> nevû speciális
|
|
függõség egy makróval
|
|
egyenértékû eszköz
|
|
használatára ad lehetõséget.</para>
|
|
|
|
<programlisting>_SUBDIRUSE: .USE
|
|
.for entry in ${SUBDIR}
|
|
@${ECHO} "===> ${DIRPRFX}${entry}"
|
|
@(cd ${.CURDIR}/${entry} && \
|
|
${MAKE} ${.TARGET:S/realpackage/package/:S/realinstall/install/} DIRPRFX=${DIRPRFX}${entry}/ )
|
|
.endfor</programlisting>
|
|
|
|
<para>A fenti kódrészletben tehát a
|
|
<buildtarget>_SUBDIRUSE</buildtarget> most már egy
|
|
<quote>makró</quote> lesz, amely ha megjelenik a
|
|
függõségek között, akkor a
|
|
törzsében megadott parancsokat hajtja
|
|
végre.</para>
|
|
|
|
<para>Mi különbözteti meg ezt a makrót a
|
|
többi céltól? Két lényeges
|
|
eltérés: elõször is, a benne megadott
|
|
utasítások a rá
|
|
függõségként hivatkozó
|
|
célhoz társított
|
|
átalakítást végzõ
|
|
utasítások <emphasis>után</emphasis>
|
|
fognak lefutni, másrészt nem befolyásolja
|
|
a jelenleg feldolgozás alatt álló
|
|
cél nevét tároló
|
|
<varname>.TARGET</varname> változó
|
|
értékét.</para>
|
|
|
|
<programlisting>clean: _SUBDIRUSE
|
|
rm -f ${CLEANFILES}</programlisting>
|
|
|
|
<para>Ebben a kódrészletben a tehát
|
|
<buildtarget>clean</buildtarget> esetében csak az
|
|
<command>rm -r ${CLEANFILES}</command> parancs lefutása
|
|
után fog végrehajtódni a
|
|
<buildtarget>_SUBDIRUSE</buildtarget> makró tartalma.
|
|
Ennek hatására a <buildtarget>clean</buildtarget>
|
|
megy egyre lentebb és lentebb a
|
|
könyvtárszerkezetben,
|
|
<emphasis>miközben</emphasis> törli a
|
|
elõzõleg elõállított
|
|
állományokat.</para>
|
|
|
|
<sect4>
|
|
<title>Definiált célok</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Az <buildtarget>install</buildtarget> és a
|
|
<buildtarget>package</buildtarget> célok
|
|
egyaránt folyamatosan haladnak lefelé a
|
|
könyvtárszerkezetben és az
|
|
alkönyvtárakban hívják
|
|
saját maguk tényleges
|
|
változatát (ezek a
|
|
<buildtarget>realinstall</buildtarget> és
|
|
<buildtarget>realpackage</buildtarget>).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>A <buildtarget>clean</buildtarget>
|
|
eltávolítja a folyamat során
|
|
keletkezett állományokat (és az
|
|
elõbbiekhez hasonlóan lefele halad a
|
|
könyvtárszerkezetben). A
|
|
<buildtarget>cleandir</buildtarget> ugyanezt
|
|
csinálja, de ha talál a
|
|
tárgykódokhoz tartozó
|
|
könyvtárat, akkor azt is törli.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect4>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Bõvebben a feltételes
|
|
kifejezésekrõl</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Az <literal>exists</literal> egy másik logikai
|
|
függvény, amellyel lekérdezhetjük,
|
|
hogy a paramétereként megadott
|
|
állomány létezik-e.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Az <literal>empty</literal> logikai
|
|
függvény igaz értékû, ha a
|
|
paramétereként megadott
|
|
változó értéke
|
|
üres.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>A <literal>target</literal> logikai
|
|
függvény igaz értékû, ha a
|
|
paraméterként megadott cél még
|
|
nem létezik.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Ciklusszerverzési lehetõségek
|
|
(<literal>.for</literal>)</title>
|
|
|
|
<para>A <literal>.for</literal> utasítás
|
|
segítségével adott
|
|
utasításokat tudunk elvégezni egy
|
|
változó tartalmaként megadott,
|
|
szóközökkel határolt elemekre. A
|
|
ciklus belsejében egy változóból
|
|
érhetjük el az aktuálisan feldolgozott
|
|
elemet.</para>
|
|
|
|
<programlisting>_SUBDIRUSE: .USE
|
|
.for entry in ${SUBDIR}
|
|
@${ECHO} "===> ${DIRPRFX}${entry}"
|
|
@(cd ${.CURDIR}/${entry} && \
|
|
${MAKE} ${.TARGET:S/realpackage/package/:S/realinstall/install/} DIRPRFX=${DIRPRFX}${entry}/ )
|
|
.endfor</programlisting>
|
|
|
|
<para>A fenti kódrészletben ha a
|
|
<varname>SUBDIR</varname> üres, akkor nem
|
|
történik semmi. Ha viszont egy vagy több
|
|
elemet is tartalmaz, akkor a <literal>.for</literal> és
|
|
az <literal>.endfor</literal> között megadott
|
|
utasítások megismétlõdnek minden
|
|
egyes elem esetén. Ezek értékét a
|
|
ciklus belsejében rendre a <varname>entry</varname>
|
|
változóban veszi fel.</para>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
</chapter>
|