Home Map Index Search News Archives Links About LF
[Top bar]
[Bottom bar]
��� �������� �������� �� ��������� ������: English  Castellano  Deutsch  Francais  Nederlands  Portugues  Russian  Turkce  

[Wilbert Berendsen]
����� Wilbert Berendsen

�� ������:

Wilbert Berendsen - ���������������� �������� � ��������� Linux. �����-�� ��������� ����������� ��� Z80. ������� ���������� Linux ��� ���� ����� ������. ��� ������������ ����� ������� � ������������ ��������� ���� �� http://www.xs4all.nl/~wbsoft/. Viva open source!


����������:

�������� ���� ������ make!

[Illustration]

������:

� ������� �������������� � �������� ������ make � ������������� ����� ����������� ��� ������ �����, ����� ���������� ������������ �����������.



 

��������

����� ������ ������������ Linux �����-������ ����������� � make : ���� �� ���������� ���� ��� ���������, ����������� ������ � �.�. 'Make' - ����� ������ ���������� ��� ���������� ������������ �����������, �� �� ������.

� ���� ������� �� ������, ��� make - �������� ���������� ��� ������� ��������� ����� - ��������� �������, �����, ���������� ����� � �.�. ������� ���������� ������ ��������, ������� ��������� ������ unix. � ����� ������� ���������� ������� ���������� make. �������� �������� - �� ����� �������� � Linux, �� � �������� make ����� ������������ �� ����� ��.  

������: ���������� �����

������ ������� � ��������� - ���������� ��������� ����, �������������� ������� ������ : Jan ������������ � ����������, � Piet � �����.

������������� ��� ����� ����� ����� ���������� ��� ������� ����� � ���������� ����� ���������. ���� �� ������� - ����� ���������� �� ���� ������ ��� ������ ���������, ��������� PHP ��� Microsoft Active Server Pages. �� ��� �� ����� �������� ��� ������ ����� ���������� ����� ��������.

���������� ������ ������� - ��������� ������� ������ � ���� �����.

�������� ��������� ���������� � header.html, � footer � footer.html. header.html �������� ��������� ������� :

<html><!-- the header -->
<head>
<title>Piet and Jan productions</title>
</head>
<body bgcolor="white">
<table border="0" width="100%"><tr>
<td bgcolor="#c040ff" valign="top">
This is our website<br>
Some rubbish is written down here.<br>
We are very interactive<br>
so this is our telephone number:<br>
<b>0123-456789</b>
</td><td valign="top">
<!-- Put the contents here -->
footer.html :
<!-- the footer -->
</td></tr></table>
</body></html>
������������������ ��������� ������ unix ������������ ���������� ���������, ������� ��� ����� � index.html, ��������� Jan :
cat header.html  /home/jan/Docs/website/index.html
echo -n '<hr>Last modification: '
date '+%A %e %B'
cat footer.html
� �������� ��������� ������� � �����. ��������� ������ ������ ������������ � ����������� ����� ������, ��� � ���������� � ���� :
{
  cat header.html  /home/jan/Docs/website/index.html
  echo -n '<hr>Last modification: '
  date '+%A %e %B'
  cat footer.html
} > /home/piet/public_html/index.html
�� �� ����� ����� ��������� � ��� ����� offer.html. � ���������� �� ������� ������ ��� ���������� ��������.

������ ������� ��������� shell-������, ������� ����� ����������� ������ � ������ ���������� index ��� header ��� footer! ��� ��� �� ���������� Linux - ������� ������ ���� �������!

� � ���� ������ ���������� make.  

������ ����������

����������� ������������ ��� GNU make - ������������ ��������. �� � ������ ������ �������� ���� � ������� ����������������. �������� ������� ��������� ����� ���������� :
    make determines whether a set of commands should be executed, based on the 
time-stamp of the target-file and the time-stamps of the source files.
������� ������� : ���� ���� �� �������� ������ ������ ����� target - ����� ��������� �������� ������������������ ������. ���� ���� ������ - �������� ���������.

��������� - ��� 'target', � �������� ����� - `prerequisites'. ������� �����������, ���� ���� �� ���� `prerequisites' ������ ����� target ( ��� ���� target �� ���������� ). ���� ��� prerequisites ������� ������ ��� � ���� ����� � target - ������� �� �����������.

� �������� ���������� ������� ���� � ������ Makefile, ������� �������� ���������� ��� make. ������ ����� ���� - ��������� 'make' � ��������� ������ �����������.

Make ���������� ��������

make target1 target2 ....

target �� ������������� (���� �� ������� - ��������� ������ �� Makefile). Make ���� Makefile � ������� ��������.  

��������� Makefile

Makefile ��������� � ����� ��������� � �������� �������� ���:
# This is an example of a Makefile.
# Comments can be put after a hash (#).

target: prerequisites
        command

target: prerequisites
        commando

# and so on and so on.
�������� � target, ����� (:) � ����������� prerequisites. ���� prerequisites ������� ����� - ����� ��������� (\\) � ���������� �� ��������� ������.

�� ��������� ������ ������������� ������� ����������� ��� ����������. ������ ������ ����������� �� ��������� �������. ���� ���������� ��������� ����� ��� ����� ������� - ������ (\\) � ����� ������. Make �������� ������� ����� �������, ���-����� ��� ����������� � ����� ������. � �������� �������� ���������� ��������� ������� ������ � ������� (;) ����� �� �������� ������ ����������.

�������� ��������: ������� ���������� � ������� TAB, �� � 8-�� ��������!

Make ������ Makefile � ��������� ������� � ���, ����� ������� ���� ���������.

���� make ���������� ��� ���������� - ����� ��������� ������ ������ target.  

Makefile ��� ������ �������

��� ������ ������� Makefile ����� ��������� ��������� ������� :
# This Makefile builds Piets' and Jans' website, the potato-eaters.

all: /home/piet/public_html/index.html /home/piet/public_html/offer.html

/home/piet/public_html/index.html:  header.html footer.html \
                                    /home/jan/Docs/website/index.html
        { \
          cat header.html  /home/jan/Docs/website/index.html ;\
          echo -n '<hr>Last modification: '               ;\
          date '+%A %e %B'                                   ;\
          cat footer.html                                    ;\
        } > /home/piet/public_html/index.html

/home/piet/public_html/offer.html:  header.html footer.html \
                                    /home/jan/Docs/website/offer.html
        { \
          cat header.html  /home/jan/Docs/website/index.html ;\
          echo -n '<hr>Last modification: '               ;\
          date '+%A %e %B'                                   ;\
          cat footer.html                                    ;\
        } > /home/piet/public_html/offer.html

# the end

�� ��������� ��� targets - 'all' � ����� index.htmloffer.html. ������������ ���������� 'all' - ���������� ������� index.htmloffer.html 'all' �� �������� ������ �����, ������� ��� target ������ ����� �����������. (����� ���������� ����� ������� ������ �������� targets, ������� �� �������� �������).

���� header � footer ���������� - ����������� ��� ��������. ���� Jan ������� ������ ���� - ���� � ���������. ������� 'make' �������� ��� ������!  

������� Makefile �����

 

����������

��������� ���������� Makefile ���������� ������� �����. ���������� �� ����� ��������� �������:
variable = value
# This Makefile builds Piets' and Jans' website, the potato-eaters.

# Directory where the website is stored:
TARGETDIR = /home/piet/public_html

# Jans' directory:
JANSDIR = /home/jan/Docs/website

# Files needed for the layout:
LAYOUT = header.html footer.html

all: $(TARGETDIR)/index.html $(TARGETDIR)/offer.html

$(TARGETDIR)/index.html:  $(LAYOUT) $(JANSDIR)/index.html
        { \
          cat header.html $(JANSDIR)/index.html     ;\
          echo -n '<hr>Last modification: '      ;\
          date '+%A %e %B'                          ;\
          cat footer.html                           ;\
        } > $(TARGETDIR)/index.html

$(TARGETDIR)/offer.html:  $(LAYOUT) $(JANSDIR)/offer.html
        { \
          cat header.html  $(JANSDIR)/index.html    ;\
          echo -n '<hr>Last modification: '      ;\
          date '+%A %e %B'                          ;\
          cat footer.html                           ;\
        } > $(TARGETDIR)/offer.html

# the end
������� ����� �������� ������������� ��������� ���� ��� ���� ����������. ������ ������� ����� ������� �������.

����� ����� ������������ ������ ����� ��� ����������� ����������. ��� ����������, ���� ���������� ��������� ����������� ������ ���������� � ���� Makefile - ��, �� ���� ���������, ������ ����� �������, ��-�� ��������. ��� ����� ����� ���������!  

Pattern Rules

���������� `Pattern Rules' ��������� ������������ ���� � ��� �� ����� ������ ��� ������ targets.

��� ������������� rules ������� ���������� ��������� ������ : ����������� ���� pattern :

Multiple targets: pattern : prerequisite prerequisite ...
        command
��� ���� - ���������, ����������� ��� ���� targets. ���� % ������������ ��� ����������� ������ target-name.

������ :

/home/bla/target1.html /home/bla/target2.html: /home/bla/% : %
        commands
����� ��������� make ��� ������ ���������� �� ��� - ��� ����� ������ � ��������� ����� ����� target-name ������������ � %.

���� % � ���� prerequisites ��������� �� �� �����, ������� ����� ����������� ��.

Make ������������ ������������� ��������� ������� :

/home/bla/target1.html: target1.html
        commands

/home/bla/target2.html: target2.html
        commands
���� % � �������`/home/bla/%' ����� �������� `target1.html' �� `/home/bla/target1.html' - ������������� `%' ���������� �� `target1.html'.

��� ������ ����� ��� ����� ��������� ��� :

$(TARGETDIR)/index.html $(TARGETDIR)/offer.html: $(TARGETDIR)/% : $(JANSDIR)/% \
                                                  $(LAYOUT)
������ �������� ���� �������� : ��� ������������ ��� ���������� � ���������? ���� ������� ������� ����������� ��� ������ targets.  

�������������� ����������

make ���������� ��������� ���������� ��� ����� ����. ��������� �� ��� �� � �������� ���������������. � �������� �������� ���, �� ����� ���������� ������, �������� target �/��� prerequisite.

���������� $\ ������������ ��� �������� ����� ������ prerequisite, � $@ - ��� target.

��������� �� ����� �������� ��������� ������� :

$(TARGETDIR)/index.html $(TARGETDIR)/offer.html: $(TARGETDIR)/% : $(JANSDIR)/% \
                                                  $(LAYOUT)
        { \
          cat header.html  $<                       ;\
          echo -n '<hr>Last modification: '      ;\
          date '+%A %e %B'                          ;\
          cat footer.html                           ;\
        } > $@
Voil�! ����� ���� ������ ��� ����� ������!

����� �������� ��������� ������������ Makefile :

# This Makefile builds Piets' and Jans' website, the potato-eaters.

# Directory where the website is published:
TARGETDIR = /home/piet/public_html

# Jans' directory:
JANSDIR = /home/jan/Docs/website

# Files needed for the layout:
LAYOUT = header.html footer.html

# These are the webpages:
DOCS = $(TARGETDIR)/index.html $(TARGETDIR)/offer.html


# Please change nothing below this line;-)
# -------------------------------------------------------------

all: $(DOCS)

$(DOCS): $(TARGETDIR)/% : $(JANSDIR)/% $(LAYOUT)
        { \
          cat header.html  $<                       ;\
          echo -n '<hr>Last modification: '         ;\
          date '+%A %e %B'                          ;\
          cat footer.html                           ;\
        } > $@

# the end
������� �������� ��������������. ������ ��� ���������� ����� ���������� - �� ����� �������� � Makefile, ��������� ���������� DOCS.

�� � ������ ������� ����� ��� ��������, ������������� ���� Makefile - ������ ��� ������ �������� ����� ��������.  

� ��� ������� �����������

������ �������� �� ������ ����������� ����� ������ � ����� �����, ��� ���������� ������ ��� �������� ��������. ������� ��� ��������� ������� :
TEXTS = index.html  offer.html  yetanotherfile.html

# Please change nothing below this line;-)
# -------------------------------------------------------------
DOCS =  $(addprefix $(TARGETDIR)/,$(TEXTS))

all: $(DOCS)

# and so on
����� �� ��������� ����������� ������� make : ������ ���������� ����� ������������ ������ ��������� ������ ������.

������ ������� $(addprefix prefix,list) ����������� � ���������� � ������� �������� �� ������ ��������. � ����� ������� �� ��������� ���������� ���������� TARGETDIR � (/).

������������� �������� ����������� ���������, ������� ������������� ���� ������, ���������� ������, � make �� �������������.

� ������ ������� �� ��������, ���, �������� �� ��, ��� target 'all' �� ������� ���� 'all'(� ������ ��� �� ����� �������) - ��� target ������ ��������. �� ��� ����, ���� ���� � ����� ������ ���� � �� ������ ����� ������...?

����� ������ - �������� make �������� target ��� ������������� ����������. ������� ��� ��������� �������:

.PHONY: all
������ ��� Makefile �������� ��������� ������� :
# This Makefile builds Piets' and Jans' website, the potato-eaters.

# Directory where the website is published:
TARGETDIR = /home/piet/public_html

# Jans' directory:
JANSDIR = /home/jan/Docs/website

# Files needed for the layout:
LAYOUT = header.html footer.html

# These are the names of the webpages:
TEXTS = index.html  offer.html  yetanotherfile.html

# Please change nothing below this line;-)
# ------------------------------------------------------
DOCS =  $(addprefix $(TARGETDIR)/,$(TEXTS))
.PHONY: all

all: $(DOCS)

$(DOCS): $(TARGETDIR)/% : $(JANSDIR)/% $(LAYOUT)
        { \
          cat header.html  $<                       ;\
          echo -n '<hr>Last modification: '         ;\
          date '+%A %e %B'                          ;\
          cat footer.html                           ;\
        } > $@

# the end
��������� ��� � �������� � ���! ������ ��������� ������� �������������� ���� ��������, ���������� �������� � crontab, �, ��� ����� ������� ��� ���, � ������������ ������ � �����������.  

��������� ������

������� ������ ������ �������� � ��� ������ ������� - ����������� � ���������� �����������.

������ ������� �� �������� �� ������������� �������� - �������� Jan � ����� ����� ������ �������� </body></html> � ��� ��������� footer, ��������� Piet, �� ������ ���������� ������ ��������. ���������� grep, perl ��� tcl ������� ����������� ���������� - �������� ���������� ��������� ���������� � ������ ��������.

����� Jan ����� ������ ������� �� ����������������� ������ � ����������� ���������� ������� sed ������� ��� ������ ������ �� <P>:

sed -e 's/^\s*$/<p>/g'
��� ���� �� ��������� - ��������� ������ � LyX � ��������� ��� �������� lyx2html ��� �������������� � HTML. �� ����� ���� �������� ��������� �������� ����������!

�� �� ������� �� �������� ������� ����������� �������� � ������� ��� - ��� ����� ����� ����������������!

� ����� ������� Jan ������ ������������ Piet ����� �� ������ ������ ��� ��������. ����� ������� �������� ��� ��� ������� �����������, ��� � ��� ������ ��������. ����� ���� ����� ��������������� ������������� NFS.

������� �� ������ ������ ��� ����� ��������� ���������� �������� ����, ������ ������� Makefile!  

��������

 

�������������� ����������

����� ��������� ���������� � ������ � ������������ make �� ������� � `GNU Make Manual'. ������ ��� �� ���������� � Linux �������������� � ������� ��������� ������� :
info make
������� ����� ������ GNU Make Manual � � GNOME, � � KDE - help browsers ��� handy tkinfo ������� ���.

������ �� �������������� ���������� � make:

Have Fun!  

�������� �������

� ������ ������� ���� �������� �������. �� ���� �������� �� ������ �������� ���� ����������� ��� ����������� ����������� ������ ���������.
 talkback page 

Webpages maintained by the LinuxFocus Editor team
© Wilbert Berendsen, FDL
LinuxFocus.org

Click here to report a fault or send a comment to LinuxFocus
Translation information:
nl -> -- Wilbert Berendsen
nl -> en Philip de Groot
en -> ru Kirill Poukhliakov

2001-05-04, generated by lfparser version 2.8