Server for Information Technologies ������ ��������������
������� �������������� ����������
(095) 932-9212, 932-9213, 939-0783
E-mail: [email protected]
������ �������� ����(!) ������������� ���������� CIT Forum CD-ROM

MAKE(1)

��������
make - ���������, ���������� � �������������� ����� ��������

���������

   make  [-f make-����] [-p] [-i] [-k] [-s] [-r] [-n] [-b] [-e] [-u] [-t] [
	 [�������_���� ...]

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

-f make-����
������� ����� ����� � ����������.

-p
������� ��� ����������������, � ����� �������� ������������ � �������� ��� �������� �������_������.

-i
������������ ���� ������, ������������ ������������ �����������. ���� ����� ��������������� ����� ��� ��������� � ����� �������� ������������ �������� ����� .IGNORE.

-k
��� ������ ���������� ���������� ������, ��������� � ������� ������������, �� ���������� ��������� ������ ������������.

-s
�� �������� ��������� ������ ����� �� �����������. ���� ����� ��������������� ����� ��� ��������� � ����� �������� ������������ �������� ����� .SILENT.

-r
�� ������������ ���������� �������.

-n
�������� �������, �� �� ��������� ��. ��������� ���� �������, ������� ���������� � @.

-b
����� ��� ������������� �� ������� �������� make-������.

-e
� ������ ������� ������������ ���������� ���������, � �� ����������� ������� make-������.

-u
�������� ����������� ����������.

-t
"������" �������_������: ����� �� �������� ��������������� ������ �������� �������; �������, ��������������� ��� ��������� �������_������, �� �����������.

-q
������. ������� make ���������� ������� ��� ��������� ��� ���������� � ����������� �� ����, ����� �� ��������� �������_����� (0, ���� �� �����). ������ ������ �����������, ���� ���� ������������ ����� -n.

.DEFAULT
���� ������ ���� ������ ����, �� ��� �� ����� ������, �� ��������������� ���������� ������, �� ������������ �������, ��������������� �� ����������� ������� ������ .DEFAULT, ���� ��� ����������.

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

.SILENT
���� ��� �� ������, ��� � ����� -s.

.IGNORE
���� ��� �� ������, ��� � ����� -i.

Make ��������� ������� �� make-����� ��� ���������� ������ ��� ���������� �������_������, ����� ������� ������� � �������. ���� ����������� ����� -f, �� ������ ����� makefile, Makefile, � ����� ������� ���������� ��������� �������� (SCCS) s.makefile � s.Makefile � ��������� �������. ���� ������ make-����� ������ -, �� ��� �������� ����������� ����. � ��������� ������ ����� ����������� ����� ��� ���� ���� -f make-����.

������� make ��������� �������_���� ������ � ��� ������, ���� �����, �� ������� �� �������, ����������� ����� � ������ ������� ����������� (����� ������, ����� ���� ������������ ����� -u � ����� ������� ����������� ����������). ��� �����, �� ������� ������� �������_���� ����������� ���������� � ������ ������� ������. ������������� ����� ��������� ���������� ����������.

Make-���� ������� �� ������������������ ��������, ������������ �����������. ������ ������ ������� - �������� ������ ����������� ��������� ���� ������� ������, ����� ���� :, ����� (�������� ������) ������ ����������� ������ ��� ������������. �����, ��������� �� ; � ��� ����������� ������, ������������ � ���������, ������������ ����� ������� shell'�, ������� ���������� ��������� ��� ���������� �������� �����. ������ ������, ������� �� ���������� � ��������� ��� #, ��������� ����� �������� ����������� ��� ����������������. ������� shell'� ����� ���� ���������� � ��������� ������, ���� ��������� �������� ������� ������ ��������� \. ���, ��� ������� make, ����� ��������� �������� ���������, ���������� shell'� � �������� ����. ��������,

	echo a\
	b
����
	ab
��� ���� �� ������� ����������� ������ shell'��.

������� # � �������_������ ��������� �����������.

� ����������� ���� make-����� ������������, ��� pgm ������� �� ���� ������: a.o � b.o, � ��� ��� � ���� ������� ������� �� ��������������� �������� ������ (a.c � b.c) � ������ ����� incl.h:

     pgm: a.o b.o
        cc a.o b.o -o pgm
     a.o: incl.h a.c
        cc -c a.c
     b.o: incl.h b.c
        cc -c b.c

��������� ������ ����������� �� �����, ������ ����� ����������� shell'��. ����� �������, ����� shell'�� ��������� �������, ����� ������������ ���������� ��������� SHELL. ������ ���� ��� ��� ������� ������� ����� ���� ����������: -, @, -@, @-. ���� ������������ @, �� ����������� ����� �������. ��� �������� ������� - make ���������� ������. ������� ����� �� ����������� ���������, ���� ������ �� ������� ����� -s, ��� � make-����� ����������� ���� .SILENT:, ��� � ������ ������� �� ����� ���� @. ����� -n ������������� ����� ������ ��� �� ����������; ������, ���� ��������� ������ �������� ����� $(MAKE), �� ��� ������ ����������� (��. MAKEFLAGS � ������ ���������). ���� ������� ����� -t, �� ���������� ����� ��������� ����������� ������ ��� ���������� �����-���� ������. � ���������, ��� ���� �� ���������� ���� ���������� ������ � ����������� (��. ����������), � �������� ������ ����� ��������� ����������� ����������.

�������, ������������ ��������� ��� ����������, ������ ���������� ���������� make. ���� �� ������� ����� -i ��� � make-����� ������������ ���� .IGNORE:, ��� ��������� ������ ���������� �� ����� -, �� ������ ������������. ���� ������� ����� -k, �� ������������ ��������� �������� �������, �� ������������ ��������, ������� �� ������� �� �������� ����� ����� �������. � ����� ��������� ��������� � �������������� �����, ������� �� ���� ����������.

����� -b ��������� ��� ������ ��������� make-�����, ���������� ��� ������ ������ make'�. ������� ������� � ���, ��� � ����� ������ ��� ������ ������������ ������ ��������� (�������� ������ ��� ���������� �� ���������) �������, ��������� � ����. � ���������� ������ ���������, ��� ������������������� ������� �������� ������.

������� ���������� � ������ �������� ����������� �������� �����, ���� ������ �� �� ������� �� ������������ ����� .PRECIOUS.

���������
������� make ������ ���������. ��� ���������� ��������� �������������� ��� ����������������. ��� ��� �������� � �������������� �� ��������� make-����� � ����� ��������� ���������� ������; ������� ���������������� �� make-����� ����������� ���������������� �� ���������. ���� ������ ����� -e, �� ���������� �� ��������� ����������� ���������������� �� make-�����. �������� � ��������� � ���� ������� �� make-����� ����������� �������� ��������� �� ���������� ��������.

���������� ��������� MAKEFLAGS �������������� ��� ���������� ����� �� ���������� ����� (����� -f � -p), ��������� ��� ��������� ������. �����, ���� ����� ���������� � ��������� ���, �� make ������� ��, ������� � ��� ��� ��������� � ��������� ������ �����, � �������� �� ���� ����������� �� ��������. ����� �������, MAKEFLAGS ������ �������� ������� �����. ��� ����������� ����� �������, ���� �������� ������������� �������� make-���� ��� �������, ���������� �� ���������, ��� ������� ���� ���� ����������� make-�����. ��� ��� ���������� ���� (��� ������������� ����� -n) ������� $(MAKE) ����������� ������, �������������, ����� ��������� make -n ���������� �� ����� �������, ����� ����������, ��� ���� �� ��������� ��� ���������� ����� -n. ��� ��������, ��� ��� ���� -n ���������� � MAKEFLAGS � ���������� ��� ������ $(MAKE). ��� ����� ����� ���� ���� �� �������� ��������� ��� make-����� �������, �� �������� �� �� ����� ����.

��������� ������
���� � make-����� ������ ���������� � ������� �������� include � ����� ��� ������ ��� ���������, �� ������� ������ ����� ����������� �������� ��������� ������ ����� � ���� ���� ����� ������� � ������� � make-����.

�������
�������, ������� ���

	�������1=�������2

�������� ������������������. � �������2 ������ ��� ������� �� ������ ����������� ��� �� ����������������� �������� ������. ����������� ��������� ����������� $(�������1[:������1=[������2]]) ���������� ��������2. ��� ����, ���� � �������2 ����������� ���������� ������1, �� �������� ������� ������ ��� ���������, � ������1 ���������� � �����, ��� ���������� �� ���������� ������2. ���� ��� ������� ������� �� ������ ������� � ��� �����������, �� ������� ������ ����� ��������. ������ ������������� ����������� ��. � ������ ����������.

���������� �������
�ake ������������ ���� ���������� ��������, �������� ��� ��������� ������ ���������� ������� ������:

$*
���� ������ �������� ������ ����� ��� ���������� �� ������� �����������; ����������� ������ ��� ��������������� ������ (��. ��������).

$@
���� ������ ���������� �� ������ ��� �������� �����; ����������� ������ ��� ���� �������� ������������.

$<
����������� ������ ��� ��������������� ������ ��� ��� ������� .DEFAULT. ���� ������ ���������� �� ��� �����, �� �������� �� ��������� ������� ������� ����. ���, � ������� .c.o ������ $< ����� ������� �� ��� ����� � ����������� .c. ��������, ������� ��� ������������ ����������������� �� ������� ����� �� ����� � ����������� .c ����� ���� �����:
	.c.o:
               cc -c -O $*.c
���
	 .c.o:
	        cc -c -O $<

$?
������ $? ����� ������������ � ����� �������� make-�����. ���� ������ ���������� �� ������ ������-����������, ������� ���������� ������� �������� �����.

$%
���� ������ ����������� ������ �����, ����� ������� ���� ������ � ���� ����(����.o), ��� ��������, ��� �� ��������� � ���������� ����. � ���� ������ $@ ���������� �� ���� (��� ������), � $% ���������� �� ��������� ��� �����, ����.o.

������ �� ���� �������� ����� �������������� �����. ���� � ������ �� ���� �������� ��������� F, �� �� ���������� �� ��������������� ������� ��� ����� ��� ����� ��������; ���� �� ��������� D, �� ������ ���������� �� ��������� ����� �������� ��������������� ������� ��� ���������� ������� /, �� ���� �� ��� ��������. ���, $(@D) ������������� �������� �� $@. ���� ������� �� ������, �� ������������ ������� ������� (.). ������ ������ $? �� ����� �������������� �����.

��������
��������� ����� (�������� �����, ����� ������� ������������ �� .o) ����� ��������������� ���������, ��������, �����, ����� ������� ������������ �� .c, .s � �.�. ���� ��� ���� ������ �� ������� ������� �� ����������� � make-�����, �� ���������� ��������������� ���������, �� ��� (���������) ������������� ��� ��������� ��������� ������. � ����� ������� make ��������� ��������������� (����������) ������� ������, ����������� �������� ���� ����� �� ������ ����� ������������ ��������� � ����������� ��������������� ������. ��������������� ������� ������ ������:

	.c .c~ .f .f~ .sh .sh~
	.c.o .c.a .c~.o .c~.c .c~.a
	.f.o .f.a .f~.o .f~.f .f~.a
	.h~.h .s.o .s~.o .s~.s .s~.a .sh~.sh
	.l.o .l.c .l~.o .l~.l .l~.c
	.y.o .y.c .y~.o .y~.y .y~.c

���������� ������� ����� ��������. ����� ������� �� � ����, ��������� ��� ���������, ����� ��������������� ��������

	make -fp - 2>/dev/null rules

������ ~ (������) ������������ � ���� �������� ��� SCCS-������ [��. sccsfile(4)]. ���, ������� .c~.o �������������� SCCS C-���� � �� ������ ���� .o. ��� ��� s. � SCCS-������ �������� ���������, �� ��� ������������ � �������� � make �������� ����������� ������� �� ��������. ������������� ������ �������� ������ ������ �� ���� ������� �� SCCS-����.

������� � ����� ��������� (�������� .c:) ���������, ��� �������� ���� x �� x.c (�� ���� ������ ������� ������). ��� ������� ��� ���������� �������� ����� ������ �� ������ ��������� ����� (��������, ��� ���������� shell-��������� ��� ������� C-���������).

�������������� �������� ������ ��� ������ ������������ ��� ������������ ����� .SUFFIXES. ��� ���� ����� �������: ������ ��������� ���, ��� �������� ���������� � ���� � �������, ������������ ��� ��� ���������. �� ��������� ���� ������ �������� ���:

	.SUFFIXES: .o .c .c~ .y .y~ .l .l~ .s .s~ .h~ .h .f .f~
	.sh~ .sh

�������, ��������� ���� ��� ������ ������ ���������� ������, ���������� ����� ���������� ������ ���������. ������������ �������� .SUFFIXES: �� ������� ������ ���������; �������� .SUFFIXES: � ������ ������� ������� ������ ���������.

��������������� �������
������ � ������� ������ pgm ����� �������� ������:

     pgm: a.o b.o
        cc a.o b.o -o pgm
     a.o b.o: incl.h

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

��������� ������� ������������ � ��������������� ��������, ����� ��������� ��������� ����� � �����-������ �� ������������ ������. ��������, CFLAGS, LFLAFS, � YFLAGS ������������ ��� ������� ����� ������������ cc(1), lex(1), � yacc(1) ��������������. ��� ����������� �������� �� ��������� ���� �������� ����� ����� ��������������� ��������� ����� ����� ��� ��������� ���������� ������.

��������������� ������� ����� ��������. ������� �������� ����� � ��������� .o �� ����� � ��������� .c ����������� ��� ������ � ������ .c.o: � ������ ������� ������������. ������� shell'�, ��������� � ���� ������, ���������� ������ ��������� ����� .o �� ����� .c. ����� ���, � ������� �� ������ ������ /, � ������� ���������� � �����, ������������ ��� ��� �������, � �� ���������� �������� �����.

����������
���� ������� ���� ��� ��� �� ������ ������������ �������� ������, �� ��� ��������������� ��� ��� �������� ����������, � ������� �������� � ������� - ��� ��� �������� ����������. ���, � ����(����.o), � $(����)(����.o) ���������� ����������, ���������� ����.o (��������������, ��� ������ ���� ��� �������������� ���������). ��������� $(����)(����1.o ����2.o) �����������. ������� ��������� ������������ ������ ����� ��� .XX.a, ��� XX - �������, �� �������� ����� ������� ������� ����������. � ���������, � ������� ���������� ���������, ����� XX ��������� �� �������� �������� ����������. ��������, ������, ����� ����(����.o) ������� �� ����.o ����. �������� ����� ������������� ���������� ������ � ������������ ��������� (��������������, ��� ��������� �������� ����� �� ����� C):

     lib: lib(file1.o) lib(file2.o) lib(file3.o)
        @echo lib is now up-to-date
     .c.a:
        $(CC) -c $(CFLAGS) $<
        $(AR) $(ARFLAGS) $@ $*.o
        rm -f $*.o

����������, ������� .c.a, ����������� ����, �������� � make. ����� ����������, �� ����� ������������ ������ �����������, �������������� ������ � ������������:

     lib: lib(file1.o) lib(file2.o) lib(file3.o)
        $(CC) -c $(CFLAGS) $(?:.o=.c)
        $(AR) $(ARFLAGS) lib $?
        rm $?  @echo lib is now up-to-date
     .c.a:;

����� ������������ ����� ����������� ���������� ��������. ������ $? ��������� ��� ��������� ���� �� ������ ������ (� ���������� lib), ��� �������� C-����� ���� ��������. ����������� �������� .o �� .c. (� ���������, ������ ��� ���������������� � .c~; ������, ��� ����� ����� �������� � �������). ������� �����, ��� ����������� ������� .c.a:, ��������� ������ �� ������ ���� ���� �� ������. ��� ����������� ����������� �������� ���������� ���������, �� ���������� ������ ����������, ���� ���������� �������� ��� ��������� �� C, ��� � �� ����������.

�����

	[Mm]akefile � s.[Mm]akefile
	/bin/sh

��. �����
sccsfile(4).
cc(1), lex(1), yacc(1), cd(1), sh(1) � ����������� ������������.

��������
��������� ������� ���������� ��������� ��� ���������� � ����� �������� ������; ��� ����������� ���� ��������� ����������� ����� -i.

�� ����������� ����� � ��������� =:@ � �����.

�������, ��������������� ����������� shell'��, �������� cd(1), ������ ���������� �� ����� ������.

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

������ $(a:.o=.c~) �� ��������. ����������� ������� �������������� �����.

��������� $(LIB)(file1.o file2.o) ������������� �������. ������ ��������� lib(file.o) �� file.o.

� ������� ������ �� ������������ ����� -u.

� ������� ������ ������� ���� �� ���������, ���� ��������� ������. ����������� ��� .PRECIOUS �� ��������.

����������� ��� .DEFAULT �� ��������.

������� $(@D), $(*D), $(<D) � $(%D) �� ������ ��������� �������� � ������������: ����������� ������������ �� � ��� ��������, � � ��� �����.
Comments: [email protected]
Designed by Andrey Novikov
Copyright © CIT