��� �������� �������� �� ��������� ������: English Castellano Deutsch Francais Nederlands Portugues Russian Turkce |
����� Wilbert Berendsen �� ������: Wilbert Berendsen - ���������������� �������� � ��������� Linux. �����-�� ��������� ����������� ��� Z80. ������� ���������� Linux ��� ���� ����� ������. ��� ������������ ����� ������� � ������������ ��������� ���� �� http://www.xs4all.nl/~wbsoft/. Viva open source! ����������: |
������:
� ������� �������������� � �������� ������ make � ������������� ����� ����������� ��� ������ �����, ����� ���������� ������������ �����������.
����� ������ ������������ Linux �����-������ ����������� � make : ���� �� ���������� ���� ��� ���������, ����������� ������ � �.�. 'Make' - ����� ������ ���������� ��� ���������� ������������ �����������, �� �� ������.
� ���� ������� �� ������, ��� make - �������� ���������� ��� ������� ��������� ����� - ��������� �������, �����, ���������� ����� � �.�. ������� ���������� ������ ��������, ������� ��������� ������ unix. � ����� ������� ���������� ������� ���������� make. �������� �������� - �� ����� �������� � Linux, �� � �������� make ����� ������������ �� ����� ��.
������������� ��� ����� ����� ����� ���������� ��� ������� ����� � ���������� ����� ���������. ���� �� ������� - ����� ���������� �� ���� ������ ��� ������ ���������, ��������� 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.
make determines whether a set of commands should be executed, based on the������� ������� : ���� ���� �� �������� ������ ������ ����� target - ����� ��������� �������� ������������������ ������. ���� ���� ������ - �������� ���������.
time-stamp of the target-file and the time-stamps of the source files.
��������� - ��� 'target', � �������� ����� - `prerequisites'. ������� �����������, ���� ���� �� ���� `prerequisites' ������ ����� target ( ��� ���� target �� ���������� ). ���� ��� prerequisites ������� ������ ��� � ���� ����� � target - ������� �� �����������.
� �������� ���������� ������� ���� � ������ Makefile, ������� �������� ���������� ��� make. ������ ����� ���� - ��������� 'make' � ��������� ������ �����������.
Make ���������� ��������
make target1 target2 ....
target �� ������������� (���� �� ������� - ��������� ������ �� Makefile). Make ���� 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.
# 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.html � offer.html. ������������ ���������� 'all' - ���������� ������� index.html � offer.html 'all' �� �������� ������ �����, ������� ��� target ������ ����� �����������. (����� ���������� ����� ������� ������ �������� targets, ������� �� �������� �������).
���� header � footer ���������� - ����������� ��� ��������. ���� Jan ������� ������ ���� - ���� � ���������. ������� 'make' �������� ��� ������!
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 - ��, �� ���� ���������, ������ ����� �������, ��-�� ��������. ��� ����� ����� ���������!
��� ������������� 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.
���������� $\ ������������ ��� �������� ����� ������ 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!
������������� 'phony' targets (.PHONY: target), ��������� ����� ������� ������ ������� �������. �������� ����� ������� ��������� ���� Linux.
make menuconfig �������� ������������� ��������� ���� ���������. make xconfig �������� ������������� ���� ��������� �� ������ Tcl/Tk ��� X.
��� targets ������ �� ������ � �������� ���������� ����. ��� ������ �������� ��� ������ ������� (� ������ ������� ������� ��� ��������� ����).
��� ���������� ������� Makefile �� ���������� PHONY targets:
����� ������� ����� ��������� HTML �� ������� ��������� ������ � ������������� ���������� �������� ���� ���������, �������� :
TEMPLATE = layout1/Template1.txt /home/httpd/sales/sales.html: sales.html $(TEMPLATE) perl Scripts/BuildPage.pl -template $(TEMPLATE) $< > $@-new mv -f $@-new $@ sales.html: sales.txt aptconvert -toc $@ $<���������� ��� ���������� ���������� ���� Template1.txt ����� �������.
���� ����� �������� ����� '@' - ��� �� ����� ���������� �������� make:
target: prerequisite @cc -o target prerequisite���� ������� ���������� � '-', ������� ������ make �� ����������� ��� ������������� ������ (�������� ��� �������� ��������������� �����):
.PHONY: clean clean: -rm -r $(tempdir)���� �� ������ ������ ���������� ��� ���������� ��� ���������� ������������ �������, �������� make install, �� �� ������ ����� ��� ����������� - ����������� ����� -n � ��������� ������:
wilbert@nutnix:~ > make -n install install -m 755 program /usr/local/bin install -m 644 program.1 /usr/local/man/man1 wilbert@nutnix:~ >
���� ��� ����� ��������� ���� - $ � �������� ����� ����� ����� - ����������� ������� ($$):
# A Makefile # Don't try this at home! :-) source = menu.txt help.txt target: $(source) for i in $(source) ;\ do \ if [ "$$i" = "menu.txt" ] ;\ then \ doThis $$i ;\ else \ doThat $$i ;\ fi ;\ done > target
info make������� ����� ������ GNU Make Manual � � GNOME, � � KDE - help browsers ��� handy tkinfo ������� ���.
������ �� �������������� ���������� � make:
|
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:
|
2001-05-04, generated by lfparser version 2.8