|
��������
make - ���������, ���������� � �������������� �����
��������
���������
make [-f make-����] [-p] [-i] [-k] [-s] [-r] [-n] [-b] [-e] [-u] [-t] [ [�������_���� ...]
��������
������� make ��������� ������������, �������� � �������������� ������ ��������. ���� ��������� ������� �������� ���� ����� � ��������� ����������� ����:
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 ������������ ���� ���������� ��������, ��������
��� ��������� ������ ���������� ������� ������:
.c.o: cc -c -O $*.c���
.c.o: cc -c -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) �� ������ ��������� �������� � ������������: ����������� ������������ �� � ��� ��������, � � ��� �����.
|