Make �� Makefile ������

�ޤ���������Ǥ�

back

����: ���Υڡ��������Ƥˤϡ������餯¿���δְ㤤������ޤ���
��󥯤���Ƥ���ΤǻĤ��Ƥ����ޤ��������Ѥˤ����դ��Ƥ���������(2008ǯ3�����)


�����ǤϤ���� make �λȤ��� �� Makefile �ν����ˤĤ��� �������Ƥ��ޤ������Ĥ� make �μ���ˤϤ����������ꡢ�����Ǥ� GNU make (gmake �Ȥ������ޥ��̾�Τ��Ȥ⤢��) �� �оݤˤ��Ƥ��ޤ� (BSD �� pmake �Ǥ����Ū����ʬ��Ʊ���Ǥ����� �ޥ�������ʤɤϰ㤦�Ȥ����⤢��Τ����դ��Ƥ�������)�� �狼��ˤ����ս�Ȥ����ޤ����äƤ�ս꤬������ϥ᡼�뤯��������


Contents

  1. make �Ϥɤ�ʤȤ��˻Ȥ���
  2. Makefile ����
  3. make �μ¹�
  4. Makefile ��ʸˡ��ե����
  5. ¿�� make �ˤĤ��� (̤����)
  6. Makefile ���� (̤����)
  7. �Ѹ�����

1. make �Ϥɤ�ʤȤ��˻Ȥ���


2. Makefile ����

�㤨�ФĤ��Τ褦�� C �Υ������ե����뤬����Ȥ��ơ�����餫�� �ǽ�Ū�˼¹Բ�ǽ�ե����� a.out ���������� Makefile ��񤯡�

header.h �� sub1.c, sub2.c �ˤ��줾�� #include ����Ƥ����ΤȤ��� :

sub1.c :

/* sub1.c */

#include "header.h"    
..

sub2.c :

/* sub2.c */

#include "header.h"    
..

a.out �� sub1.o �� sub2.o (���줾�� sub1.c, sub2.c �򥳥�ѥ��뤷�� ���֥������ȥե�����) ���󥯤��ƤǤ���¹Բ�ǽ�ե�����Ǥ��롣

�ޤ� a.out ������ sub1.c �� sub2.c �� ��¸���Ƥ��롣�������äơ�sub1.c, sub2.c �Τɤ��餫�� �������줿���ˤϡ�a.out �� �ƥ���ѥ��� (���ξ��ϥ��) ����ɬ�פ����롣

����� sub1.c, sub2.c ��ξ���إå��ե����� header.h �˰�¸���Ƥ��� (�ʤ��ʤ顢ξ���Ȥ� header.h �� #include ���Ƥ��뤫��)�� �������äơ�header.h ���������줿���ˤϡ�sub1.c, sub2.c �Ȥ�˺ƥ���ѥ��뤹��ɬ�פ����롣 �����������αƶ�������� a.out ����٥�󥯤��ʤ���Фʤ�ʤ���

�Ǥϰʾ�Τ褦�ʾ����ǡ���Ȥ�ڸ����뤿��� Makefile �򤫤��� �ɤ��ʤ��������?

�� Makefile ���� (1) ��ľ�С������ ��

# Makefile 1 (��#�פϹ����ޤǤΥ�����)

a.out: sub1.o sub2.o         # �������å� a.out �ΰ�¸�ե������ sub1.o, sub2.o
        cc -o a.out sub1.o sub2.o # a.out ���������ޥ��

sub1.o: sub1.c               # sub1.o �ΰ�¸�ե������ sub1.c
        cc -c sub1.c         # sub1.o ���������ޥ��
sub2.o: sub2.c               # sub2.o �ΰ�¸�ե������ sub2.c
        cc -c sub2.c         # sub2.o ���������ޥ��

# header.h �ϥ���ѥ������ include �����Τǡ��ºݤˤϲ��⤷�ʤ��Ƥ褤
sub1.c: header.h             # sub1.c �ΰ�¸�ե������ header.h
sub2.c: header.h             # sub2.c �ΰ�¸�ե������ header.h

�����ǡ�header.h �� sub1.c, sub2.c ��� #include ����Ƥ���Τǡ� �Ǹ�� sub1.c �� sub2.c �Τ���ε�§�ϡ� �ºݤˤϲ���Ԥ�ʤ��� �����ε�§�� header.h ���������Ȥ��Τ���ˤ��롣 �������Ƥ����ȡ�make �� header.h �ι����� �����å����뤳�Ȥ� sub1.c �� sub2.c �� �������줿�Ȥߤʤ���sub1.c �� sub2.c �� ��ưŪ�˥���ѥ��뤷�ʤ����Ƥ���롣

���ơ� ��� Makefile �ˤϻ����褦����ʬ�������Ĥ⤢�롣 ���Τ���ե����뤬�����Ƥ���Ƚ񤯤Τ����Ѥ� (make �� �������ե�����ο��������Ȥ��� ��٥�ΤȤ��˿��θ��̤�ȯ������)�� �����ǡ֥��ե��å����롼��פ�Ȥäơ������û�̤��Ƥߤ褦��

�� Makefile ���� (2) ���ե��å����롼������ ��

# Makefile 2

a.out: sub1.o sub2.o
        cc -o a.out sub1.o sub2.o

# ���ե��å����롼�� (.c �� .o)
.c.o:
        cc -c $<
       
sub1.o: header.h	# ����: .c �ǤϤʤ� .o ����¸���Ƥ���
sub2.o: header.h

�����ǻȤ��Ƥ��륵�ե��å����롼��ϡ����Τ褦�ʤ��Ȥ��̣���Ƥ��롣

�֥��ե��å��� .c �Υե�������Ф��Ƥϡ�
cc -c ���Υե�����
�Ȥ����������ޥ�ɤ�Ȥä� ���ե��å��� .o �Υե���������������
����ˤ�ä� make �� ���ʤ�Ȥ�.o�פȤ����ե����뤬ɬ�פǡ����� ���ʤ�Ȥ�.c�פȤ����ե����뤬����Ȥ��ϡ� ���Ĥ⤳���������ޥ�ɤ�Ȥ��� �����Ǥ������Ȱ�ä� sub1.o, sub2.o �� header.h �˰�¸���Ƥ���Ƚ񤫤�Ƥ��뤳�Ȥ����ա� ����� sub1.c �� sub2.c �Τޤޤˤ��Ƥ����ȡ� make �Ϥ��ޤ�ư���Ƥ���ʤ���

������ǡ���$<�פϥޥ����ΰ��Ǥ��롣 �ޥ����ȤϤ������ѿ��Τ褦�ʤ�Τǡ�����򤦤ޤ��Ȥ��Ⱦ�� Makefile �Ϥ����û�̤Ǥ��롣

�� Makefile ���� (3) ���ե��å����롼��+�ޥ������� ��

# Makefile 3

# �ޥ��������
CC      = cc
OBJS    = sub1.o sub2.o

# ������§��
a.out: $(OBJS)                 # $(OBJS) �� "sub1.o sub2.o"
        $(CC) -o $@ $(OBJS)    # $@ �� "a.out", $(CC) �� "cc"

.c.o:
        $(CC) -c $<

sub1.o: header.h
sub2.o: header.h

�ޥ�������ϤդĤ� Makefile ����Ƭ�˽� (�ܺ٤ϡ��ޥ�������ν����ι�򻲾�)�� ������Ǥϡ���¸�ե�����ȥ���ѥ���Υ��ޥ�ɤ�ޥ����ˤ��뤳�Ȥǡ� �ѹ����٤��ս�򾯤ʤ����Ƥ��롣make ��¹Ԥ���Ȥ��ϥ���ѥ���� ����ѥ��饪�ץ����򤤤������Ѥ��Ƥߤ뤳�Ȥ�¿���Τǡ� ���Τ褦�ˤ��Ƥ����������Ǥ��롣�������ޥ�ɤ���ǻȤ��Ƥ��� ��$@�פȤ����ޥ����ϡ��������å�̾ (���ξ��� a.out) �� Ÿ�����졢��$<�פȤ����ޥ����ϡ������Ǥ�Ҥ٤��褦�� ���ե��å����롼����ǥ���ѥ��뤹�٤��ե�����̾�ΤҤȤ� (���Ȥ��С����ե��å����롼�뤬 sub1.c �� sub1.o ��Ŭ�Ѥ���Ƥ����� ���ξ��� sub1.c) ��Ÿ������롣 ���Τ褦�ʥޥ�������˻Ȥ��Τ����������� Makefile ��񤯥��ĤǤ��롣


3. make �μ¹�

make ��

     % make
�Ȥ��������פ��뤳�Ȥǡ�Makefile ���ɤ߹��ߥ������åȤ������򳫻Ϥ��롣 ���Τ褦�˲�����ꤻ���� make ��¹Ԥ���ȡ�make �Ϥ��κǽ���ɸ�Ȥ��� Makefile �ΰ��ֺǽ�˽񤫤�Ƥ��륿�����å����������褦�Ȥ��롣 �㤨����� Makefile �Ǥϡ�make �� a.out �Ȥ��� �������åȤ��������褦�Ȥ��롣 �������륿�����åȤ���ꤷ�� make ��¹Ԥ���ˤϡ�
    % make sub1.o 
�Τ褦�˼¹Ԥ���Ф褤�����ξ�硢make �� Makefile �ΰ��ֺǽ�˽񤤤Ƥ��� �������åȤΤ����ˡ���sub1.o�פȤ����������åȤ���������ˤȤɤ�롣

make ���ǥե���Ȥ��ɤ߹���ե������ ��Makefile�� �Ȥ���̾���Ǥʤ���� �ʤ�ʤ���������������ʳ��Υե������ Makefile �Ȥ������Ѥ��������ϡ�

     % make -f Makefile.unix
�Τ褦�˻��ꤹ�롣����ǡ�make �� Makefile.unix �Ȥ����ե������ Makefile ������˻Ȥ���

�������������Υޥ������

�ޤ���make �ϥޥ���������򥷥����������Ǥ�Ǥ��롣

     % make CC=gcc
�Ȥ���С�make �μ¹Ի��ˤϤ��餫���� CC �ޥ������������롣 �����ͤ� Makefile ����������Ƥ���ޥ������ͤ���ͥ�褷�ƻȤ����� �������뤳�Ȥǡ�Makefile ��񤭤����뤳�Ȥʤ���ڤˤ��������� �����ǥե�������������뤳�Ȥ��Ǥ��롣

make �μ¹ԥ��ץ����

Make �μ¹ԥ��ץ��������̥����뤫����ꤹ�뤬�� �Ķ��ѿ� MFLAGS �Ǥ����Ǥ��롣�����¿�� make (make ��������� ���������ҤȤʤä� make ��¹Ԥ��뤳�ȡ�¿�� make ����) �ǡ��� make ���¹ԥ��ץ����򤽤λ� make �˷Ѿ����뤿��˻Ȥ���

-f �ե�����̾
��Makefile�ɤ�������̤Υե�����̾��Ȥ�����-�ɤ�ɸ�����ϡ� �ޤ���Makefile �⤫���̤� Makefile ���������ꤹ����ˤϡ� �������ѥ�������Ǥ��롣 �ޥ��� VPATH �ϰ�¸�ե�����򥵡�������ѥ��Υꥹ�ȤǤ��롣 ��:�� �Ƕ��ڤäƽ񤯡�
-n
�¹Ԥ��٤��������ޥ�����ɽ���Τߤ�Ԥ����ºݤˤϼ¹Ԥ��ʤ��� ����ϡ����� Makefile ���ɤ�ʤ��Ȥ򤹤�Τ�������ä� ͽ�ۤ������Ȥ���ͭ����
-s
make ���������ޥ�ɤ�¹Ԥ���Ȥ��ˡ������ �ޥ���Ÿ���������֤����ɽ�����ʤ���¹Ԥ��롣 ���Υ��ץ����ϡ��¹Ԥ��륳�ޥ�ɤ򤤤�����ɽ�������ʤ��褦�ˤ��롣
-k
make �ϡ��������ޥ�ɤ�¹Ԥ����Ȥ��ˡ������ǥ��顼��ȯ������� ����ʹߤ���������ߤ�����λ���롣���Υ��ץ�����Ĥ���� make �� �������ޥ�ɤǥ��顼��ȯ�����Ƥ�̵�뤷�ơ��Ǹ�ޤǵ�§�����̤���
-p
make �Ǥ��餫�����������Ƥ��뵬§���ޥ����򤹤٤�Ÿ����ɽ�����롣
-t
�������ޥ�ɤ򲿤�¹Ԥ��������ꤵ�줿�������åȤ� touch ���롣
-e
make ���������줿�ޥ�������Ķ��ѿ����ͤ�ͥ�褹�롣 �ޥ�����Ÿ�� �ι�򻲾ȡ�

4. Makefile ��ʸˡ��ե����

Makefile �ϴ����Ȥ��ơ��Ĥ��Τ褦�ʹ�¤�ˤ����ޤ���ʬ�����Ƥ��롣

  1. �ޥ��������
  2. ������§�����
  3. ¾�� Makefile �� include ���� (ɬ�פ˱�����)

������ե��������Ƭ����������Ƚ񤤤Ƥ����Ф褤�� ���ߥ����� ; �ʤɤ����̤ʹ����ΰ���ɬ�פʤ� (������ �������ޥ�ɤ�������Ƭ�˥���ʸ����Ȥ�ɬ�פ������Τ����ա� �ܤ����� ������§����� �򻲾�)�� �����Ȥϡ�#�פ�񤯤��ȤǻϤޤꡢ �ʲ������ޤ��������ȤȤߤʤ���롣


�ޥ��������

�ޥ�������ν���

��Ƭ���顢

�ޥ���̾ = ��
�Τ褦�˽񤯡��ͤ���ǡ�������̤Υޥ����򻲾Ȥ��Ƥ�褤��

��:

       CC     = gcc
       OBJ1   = sub1.c
       OBJS   = $(OBJ1) sub2.c
����������ʬ���Ȥ򻲾Ȥ��ƤϤ����ʤ� (��: OBJS = $(OBJS) sub.c �ϥ���)���ޤ����ʲ��ι�ˤ� �񤤤Ƥ���褦�ˡ��ޥ������ͤϤ�������Ƿ��ꤵ���Ȥϸ¤餺�� �����������Ķ��ѿ������Ƥˤ�äƤ�ƶ�������롣

�ޥ�����Ÿ��

�ޥ��������äƤ����ͤ�Ÿ�����뤤���Ф����Ū�ʤ������ $(CC) �Τ褦�ˤ�����ˡ�Ǥ��롣��������С� ������ʬ���ޥ��� CC ��������줿ʸ���� (�����Ǥ� gcc)��Ÿ������롣make �Ϥ����Ĥ��Υޥ��� Ÿ����ˡ�򥵥ݡ��Ȥ��Ƥ��� :

${�ޥ���̾} ���뤤�� $(�ޥ���̾)
�ޥ�����Ÿ������Ȥ��Ρ���äȤ����Ū�ʻȤ����������դĤ��� �ޥ����򤽤�������֤������������
��: $(CC) �� gcc
Ÿ���������Ƥϼ��Τ褦�ʽ���Ƿ����롣
  1. ���Υޥ����� make �Υ���������ǻ��ꤵ��Ƥ���С� �ޤ����쿿����˻��Ѥ���롣 �������������Υޥ������ ���ȡ�
  2. ���줬�ʤ���硢makefile ��Dz����ͤ���������Ƥ���С� ���줬���Ѥ���롣
  3. �����ʤ���硢�Ķ��ѿ���Ʊ��̾���Τ�Τ�����С� ���줬�ޥ����Ȥ��ƻ��Ѥ���롣 Makefile ������̤� make ��¹Ԥ����硢 ���߼¹���� make �Ϥ��Υޥ��������äƤ����ͤ򤹤٤� �Ķ��ѿ��ˤ�äƼ��� make ���Ϥ������Τ���ˤ��ε�ǽ�� ɬ�פȤʤ롣¿�� make ���ȡ�
$@
���ޡ��¹Ԥ��褦�Ȥ��Ƥ����������ޥ�ɤ���ǡ� �֤��줬�������褦�Ȥ��Ƥ��륿�����å�̾�פ�Ÿ������롣

��:

       a.out: sub1.o
               cc -o $@ sub1.o
       

�����ǡ�
$@ �� a.out
��Ÿ������롣

$<
���ޡ��¹Ԥ��褦�Ȥ��Ƥ����������ޥ�ɤ���ǡ����Υ������åȤ� ��¸���Ƥ���ե�����ΤҤȤĤ�Ÿ������롣 �����ѿ��Ϥ�������ե��å����롼���� �������ޥ�ɤǻȤ��롣

��:

       .c.o:
               cc -c $<
       

�����ǡ�make �� sub1.c ���� sub1.o ���������뤿��� �����������ޥ�ɤ�¹Ԥ���ʤ�С�
$< �� sub1.c
��Ÿ������롣

$*
�������å�̾���饵�ե��å������������Τ�Ÿ������롣

��:

       paper.ps: paper.dvi
               dvips $*
       

�����ǡ�
$* �� paper
��Ÿ������롣

$?
��¸�ե�����ǹ������줿��ΤΥꥹ�Ȥ�Ÿ������롣

��:

       a.out: sub1.c sub2.c
               echo "$? are modified."
       

�����ǡ��⤷ sub1.c ������ a.out ���⿷�������
$? �� sub1.c
��Ÿ������롣

���ޤ�Ȥ��ʤ������ʲ��Τ褦�ʥޥ����⤢�롣

$($(�ޥ���̾))
�ޥ����� 2�ʳ���Ÿ�����롣 ��:
       VAR = CC
       CC = gcc
       �����ǡ�
       $($(VAR)) �� $(CC) �� gcc
       
$(�ޥ���̾:ʸ����1=ʸ����2)
ʸ�����ִ��Ĥ��ޥ����� �ޥ�����Ÿ������Ȥ���ʸ����1 �� ʸ����2 ���ִ����롣 ����Ϥ褯�ʲ��Τ褦���Ѥ����� :
       OBJS = sub1.o sub2.o sub3.o
       �����ǡ�
       $(OBJS:.o=.c) �� sub1.c sub2.c sub3.c
       
$(�ޥ���̾/*/ʸ����1&ʸ����2)
ʸ�����ɲäĤ��ޥ����� �ޥ�����Ÿ������Ȥ�������Ÿ����̤�ʸ����1�� ʸ����2���ɲä��� :
       NAMES  = aaa bbb ccc
       �����ǡ�
       $(NAMES/*/sub_&.c) �� sub_aaa.c sub_bbb.c sub_ccc.c 
       
$(�ޥ���̾/^/ʸ����)
ʸ�����ɲäĤ��ޥ����� �ޥ�����Ÿ������Ȥ���������Ƭ��ʸ�������ɲä��� :
       NAMES  = aaa.c bbb.c ccc.c
       �����ǡ�
       $(NAMES/^/sub_) �� sub_aaa.c sub_bbb.c sub_ccc.c 
       
$(�ޥ���̾/$/ʸ����)
ʸ�����ɲäĤ��ޥ����� �ޥ�����Ÿ������Ȥ�������������ʸ�������ɲä��� :
       NAMES  = sub_aaa sub_bbb sub_ccc
       �����ǡ�
       $(NAMES/$/.c) �� sub_aaa.c sub_bbb.c sub_ccc.c 
       
$(�ޥ���̾?ʸ����1:ʸ����2)
���ʬ���ޥ����� ���ꤷ���ޥ��������Ǥ��������Ƥ����ʸ����1 �� ̤����ʤ��ʸ���� 2 ��Ÿ�����롣

������§�����

�ҤȤĤ�������§�Ϥ���� 2�Ĥ���ʬ��ʬ����롣������

make �ϡ���¸�ط���񤤤��Ԥ��������ޥ�ɤ�񤤤��Ԥ� ��Ƭ�˥��֤����뤫�ʤ����Ƕ��̤��Ƥ��롣�������äơ�

  1. ��¸�ط���ɬ����Ƭ�����񤫤ͤФʤ�ʤ���
  2. �������ޥ�ɤ�ɬ����Ƭ�˥���ʸ�� (ASCII �����ɤ� 9�֤�ʸ���� ���ڡ����Ǥϥ���) ������ʤ���Фʤ�ʤ���
���� 2�Ĥ򤭤���ȼ�äƤ��ʤ��ȡ�make �ϴ��Ԥ����̤��ư��򤷤ʤ���

�� :

       a.out: sub1.o sub2.o               # ��¸�ط�
               cc -o a.out sub1.o sub2.o  # �������ޥ��1
               strip a.out                # �������ޥ��2

��������make �Ǥ� �������\�פǥ��������פ��뤳�Ȥ��Ǥ���Τǡ� ����Ū�ˤ� 1�Ԥΰ�¸�ط��Ǥ⸫������ʣ���ԤȤ��ư������Ȥ��Ǥ��� (������������ޥ�ɤǤ�Ʊ���Ǥ���)��

�����򥨥������פ�����:

       a.out: sub1.o \
              sub2.o
               cc -o a.out
                     sub1.o \
                     sub2.o
               strip a.out

���ξ��ⵡǽ�Ͼ�Ȥޤä���Ʊ���Ǥ��롣

��¸�ط��ν���

�� (�ɤ����ɬ����Ƭ�����񤯤���) :

�������å�: ��¸�ե�����̾1 ��¸�ե�����̾2 ��
��:�פκ��դ˽񤫤줿�������åȤϡ� ���դ˽񤫤줿�ե�����˰�¸���Ƥ��뤳�Ȥ�ɽ���� ��¸�ե�����̾��������̤Υ������åȤˤʤäƤ��Ƥ�褤���� ��¸�ե������ҤȤĤ�񤫤ʤ��Ƥ�褤��

�� 1: (�������å� a.out �� sub1.o, sub2.o �Ȥ���2�ĤΥե������ ��¸���Ƥ��뤳�Ȥ�ɽ��)

       a.out: sub1.o sub2.o
               cc -o a.out sub1.o sub2.o   # �������ޥ��
       

�� 2: (�٤Ĥ˰�¸�ե�����Ϥʤ��Ƥ�褤)

       logfile:
               touch logfile               # logfile �Ȥ������Υե���������
       

�ʤ����褯�Ȥ��� make �Υ��ĤȤ��ơ��ºݤˤ���������ʤ� �������å�̾��Ĥ��ä��Хå����������롣 Makefile ���� �򻲾ȡ�

.���ե��å���1.���ե��å���2:
���ե��å����롼����Ȥ��ݤΡ� ��¸�ط��ν����������
�����ե��å���2 �ΤĤ����ե����뤫�顢
�����ե��å���1 �ΤĤ����ե�����������Ǥ����
���Ȥ�ɽ�����Ĥޤꡢ
              ������ �� ������
       .���ե��å���1.���ե��å���2:
       
�δط��Ǥ��롣����򺸱��դ˽񤤤Ƥ��ޤ��ߥ������ա�

����1: ���ե��å����롼��˴��Ԥ������ʤ����ȡ� ���ե��å����롼��ϡ������ޤ� ���������ޥ�ɤ���ά���줿�Ȥ��ˤ��Υ롼�����Ѥ���� �Ȥ�����ΤǤ��ꡢ��¸�ط������ѤˤϤʤ�ʤ��� �Ĥޤꡢ.c.o �Υ��ե��å����롼���񤤤�����Ȥ��äơ�

��.o �ΤĤ����ե������ɬ����
.c �ΤĤ����ե�����˰�¸���Ƥ����
������������Ȥˤ��ʤ�ʤ��� ���ե��å����롼�뤬���ꤹ��Τ� �����ޤǾ�ά�����������ޥ�ɤ����ʤΤ���
���Ȥ��аʲ��Τ褦�ʵ�§�Ǥϡ�header.h ����������Ƥ� make �� sub1.c ��ƥ���ѥ��뤷�Ƥ���ʤ� :
       a.out: sub1.o
              cc -o $@ sub1.o
       .c.o:
              cc -c $<
       sub1.c: header.h
       
����ϡ�make �� sub1.c �� sub1.o �ΰ�¸�ط����Τ�ʤ�������� �ʲ��Τ褦�˽񤯤Ȥ��ޤ�ư�� :
       a.out: sub1.o
              cc -o $@ sub1.o
       .c.o:
              cc -c $<
       sub1.o: sub1.c
       sub1.c: sub1.h
       
���뤤�ϡ��ʲ��Τ褦�ˤ��� :
       a.out: sub1.o
              cc -o $@ sub1.o
       .c.o:
              cc -c $<
       sub1.o: sub1.h
       

����2: ���ե��å����롼��� .c , .o, .h, .a �ʳ��Υ��ե��å�����Ȥ����ϡ�make ������� ���ե��å����Ǥ����ǧ���Ǥ���褦�ˡ� ���餫���� Makefile ��Ƭ�Ǽ��Τ褦��������Ƥ���ɬ�פ����� :

       .SUFFIXES: .tex .dvi .ps .java .class  # �������ɲä��륵�ե��å���

       .tex.dvi:
                jlatex $<      # tex ���������� dvi �ե����������
       .dvi.ps:
                dvips $<       # dvi �ե����뤫�� PostScript �ե����������
       .java.class:
                javac $<       # java ���������� class �ե����������
       

�������ޥ�ɤν���

�������ޥ�ɤϤ����դĤ��˥�����Ǽ¹Ԥ��륳�ޥ�ɤ� �񤱤Ф褤����ɬ����Ƭ�˥���ʸ������������ȡ�

�� :

[����ʸ��]�������ޥ��
����Ū�ʷ�����

�� :

       sub1.o: sub1.c           # ���ιԤϰ�¸�ط�
               cc -c prog.c     # ���ιԤ��������ޥ��
       ��������
       (���ζ����� TAB �����򲡤��ƺ�뤳�ȡ����ڡ������¤٤Ƥϥ���)
       

make �Ϥ��Υ������åȤ��������ޥ�ɤ�夫���˰�Ԥ��ļ¹Ԥ��롣 ����Ū�ˤ��������ޥ�ɰ�Ԥ��Ȥ� make �Ϥޤ��������Ƥ�ɸ����Ϥ�ɽ������ sh (Bourne Shell) ��ư�������ιԤ����Ƥ�¹Ԥ����롣 ���ΤȤ���Makefile�� ��������줿�ޥ����ϴĶ��ѿ����ͤȤ��� export ����롣�����ȥǥ��쥯�ȥ�ϸ��� make ��¹Ԥ��Ƥ��� �ǥ��쥯�ȥ�ˤʤ롣

�������ޥ�ɤ����顼��ȯ������� make �Ϥ���ʹߤ���������ߤ��뤬�� ���Τ褦�ʻ��֤��ɻߤ��뤿��ˤ� make �� -k ���ץ�����Ĥ��뤫�� �ʲ��Τ褦�ʽ񼰤�Ȥ��Ф褤 :

����¾�ν� :

[����ʸ��]- �������ޥ��
make �Ϥ����������ޥ�ɤ����顼��λ���Ƥ����Ǥ��ʤ���

�� :

       clean:
               -rm a.out *.o	# ���Ԥ��Ƥ� make �����Ǥ��ʤ�
       ��������
       (���ζ����� TAB �����򲡤��ƺ�뤳�ȡ����ڡ������¤٤Ƥϥ���)
       
[����ʸ��]@ �������ޥ��
make �Ϥ����������ޥ�ɤ�ɸ����Ϥ�ɽ�������¹Ԥ��롣

�� :

       clean:
               @rm a.out *.o    # ���Υ��ޥ�ɤ�ɽ�������˼¹�
       ��������
       (���ζ����� TAB �����򲡤��ƺ�뤳�ȡ����ڡ������¤٤Ƥϥ���)
       

�������ޥ�ɤ�񤯺ݤ������� :


¾�Υե���������Ƥ�Ȥ����

���� Makefile ��ǡ�¾�Υե���������Ƥ�����ߤ����Ȥ��� include ���ޥ�ɤ�Ȥ���

include �ե�����̾
�ǡ����� include ����������˥ե����뤬�Ȥ���ޤ�롣 C �Υץ�ץ����å��ˤ����� #include �ʤɤȤޤä���Ʊ����

�� :

include subdir/Makefile.macro

5. ¿�� make �ˤĤ���

(̤����)

Makefile �Τʤ��ˤϡ�������Ǥ����¾�� make �� �¹Ԥ���褦�ˤʤäƤ����Τ����롣�����Ϥ���˥������ĥ꡼�� ���֥ǥ��쥯�ȥ���� Makefile ��¹Ԥ����Τ�¿��������ˤ�ä� �ץ������������ϲ��󤫤� make ��ʬ���ƹԤ��롣 ���Υ��åȤȤ��Ƥϡ����֥ǥ��쥯�ȥ���Υե�����ϥ��֥ǥ��쥯�ȥ�� Makefile �ˤ�ä�ʬ�������졢Makefile �θ��̤������ä��ꤹ�뤳�Ȥ� �������롣����������Ϥ����ޤǤ�����ȥ��֥ǥ��쥯�ȥꤴ�Ȥ� �狼��䤹�� Makefile ��񤤤��Ȥ����äǡ��������ؤ����� ��ʬ���Ȥ�ޤ� make �ǸƤӽФ�����ʤɡ������ؤ��ɤߤˤ�����Τ� �ʤäƤ��ޤ����Ȥ⤢�롣


6. Makefile ���� (�������񤤤����)

(C �ǽ񤫤줿 gserver �Ȥ����ץ������򥳥�ѥ��뤹��)

# Makefile for gserver

# �ޥ������
CC	= cc
CFLAGS	= -O
LDFLAGS	=
INCLUDES = -I/usr/local/include -I../libmisc -I.
LIBS	= -L../libmisc -lmisc -lX11 -lGL -lGLU -lm
TARGET	= gserver2
OBJS	= main.o command.o x11window.o resident.o shape.o \
	  matrix.o object.o stream.o

# ������§
all:	$(TARGET)

test:	$(TARGET)
	./$(TARGET) -test

$(TARGET): $(OBJS)
	$(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)

clean:
	-rm -f $(TARGET) $(OBJS) .nfs* *~ \#* core

.c.o:
	$(CC) $(CFLAGS) $(INCLUDES) -c $<

gserver.h: object.h matrix.h gtypes.h
command.o: gserver.h
main.o: gserver.h
matrix.o: matrix.h
object.o: object.h
resident.o: gserver.h
shape.o: gserver.h
stream.o: gserver.h
x11window.o: gserver.h

(Hoge �Ȥ��� Java Applet �򥳥�ѥ��뤹��)

# Makefile for java applet hoge

.SUFFIXES: .eucjava .java .class

TARGET	= Hoge

all:	$(TARGET).class
	java $(TARGET)
run:	$(TARGET).class
	appletviewer $(TARGET).html
clean:	
	-rm *.class
.eucjava.java:
	native2ascii -encoding EUCJIS $*.eucjava $*.java
.java.class:
	javac -deprecation $<

(������� LaTeX �������򥳥�ѥ��뤷��������)

# Makefile for thesis

TARGET	= final
FIGS	= eps/agent.eps \
	  eps/broadcast.eps \
	  eps/jikken.eps \
	  eps/object1.eps \
	  eps/planning.eps \
	  eps/screen.eps \
	  eps/system.eps
LPR	= lpr -P$(PRINTER)
XDVI	= xdvi
DVIPS	= dvips
TEX	= jlatex

.SUFFIXES: .ps .dvi .tex .eps

all:	$(TARGET).dvi
	$(XDVI) $(TARGET).dvi
force:	clean all
print:	$(TARGET).ps
	$(LPR) $(TARGET).ps
clean:
	-rm -f $(TARGET).*
.tex.dvi:
	-rm -f *.aux *.toc *.lot *.lof
	$(TEX) $<
.dvi.ps:
	$(DVIPS) $<

$(TARGET).ps: $(TARGET).dvi
$(TARGET).dvi: $(TARGET).tex $(FIGS)

7. �Ѹ�����

����ʸ��Ǥ� make �Τդ�ޤ�����������Τ� �ʲ��Τ褦���Ѹ��ȤäƤ��ޤ���

Makefile
make ��ư�����ꤹ��ե����롣��¸�ط���������Ƥ��ꡢ make �Ϥ��Υե���������Ƥ��ɤ��ư��롣���ν񤭤褦�ˤ�äơ� make �ˤ��ޤ��ޤ�ư��򤵤��뤳�Ȥ��Ǥ��롣�ʤ����ե�����̾�� �դĤ�����Ū�ˡ�Makefile�פȤ��뤳�Ȥ˷����Ƥ��롣
��¸
�֤���ե�����򥳥�ѥ���(����)����ˤϡ������Ȥʤ��̤� �ե����뤬�ʤ���Фʤ�ʤ��� �Ȥ��ä�������֥ե����뤬¾�Υե��������¸���Ƥ����פȤ�����
��¸�ط�
�֤ɤΥե����뤬�ɤΥե�����˰�¸���Ƥ��뤫�פ�񤭽Ф�����Ρ� Makefile �ǤϤ���˲ä��ơ����Υե������ºݤ��������뤿��� ���ޥ�� (�������ޥ��) ��񤯡�

Makefile �ˤ������¸�ط����� :

       sub1.o: sub1.c	    �� ��¸�ط�: ��sub1.o �� sub1.c �˰�¸���Ƥ����
               cc -c sub1.c �� �������ޥ��: sub1.c ���� sub1.o ����������
       

�ܤ����� ��¸�ط��ν������ȡ�

�������å�
�֤���ե�����פ����������������ΤȤ�����������Ū�Ǥ��뤽�� �֤���ե�����פ���������å��פȸƤ֡�

Makefile �ˤ����륿�����åȤ��� :

       sub1.o: sub1.c
       ^^^^^^
     �������å�
       
��¸�ե�����
�֤���ե�����פ����������������Υ������åȤ��������뤿��� ɬ�פʥե�����Τ��Ȥ򤽤Υ������åȤ���¸�ե������� �Ƥ֡�make �Ϥ��Τ��륿�����åȤ��������褦�Ȥ���Ȥ� �����ΰ�¸�ե����뤬�ʤ��ȡ��ޤ�������������褦�Ȥ��롣

Makefile �ˤ������¸�ե�������� :

       sub1.o: sub1.c
               ^^^^^^
            ��¸�ե�����
       
�������ޥ��
���륿�����åȤ������������ơ����Τ���ΰ�¸�ե������ ·�äƤ���Ȥ��롣���ΤȤ��������ΰ�¸�ե����뤫��ºݤ� �������åȤ򥳥�ѥ���ʤ��������뤿��Υ��ޥ�ɡ�

Makefile �ˤ������������ޥ�ɤ��� :

       sub1.o: sub1.c	    �� ��¸�ط�: ��sub1.o �� sub1.c �˰�¸���Ƥ����
               cc -c sub1.c �� �������ޥ��: sub1.c ���� sub1.o ����������
       

�ܤ����� ��¸�ط��ν������ȡ�

���ե��å����롼��
�������ޥ�ɤ�񤯺ݤˡ������������٤�Ʊ���褦�ʤ�Τ�񤯤Τ� ���ݤ����������Ȥ��� C �Υ������ե������.c�פ����ɬ�����Ĥ� ���֥������ȥե������.o�פ���Τǡ���¸�ե�����Υ��ե��å����� ��.c�פǡ��������åȤΥ��ե��å�������.o�פ��ä��鼫ưŪ�ˤ��� �������ޥ�ɤ�Ŭ�Ѥ��Ƥۤ��������� �֤��륵�ե��å�����ȿ�����ơ���ưŪ���������ޥ�ɤ�Ŭ�Ѥ���롼��� �����ե��å����롼��Ǥ��롣���Υ��ե��å����롼�����ٽ񤤤Ƥ����С� ���ȤϤ��줬Ŭ�Ѥ�����¸�ط��ˤ��������ޥ�ɤ��ά�Ǥ��롣 ������������ϰ�¸�ط����Τ�Τ����Ѥ����ΤǤϤʤ��� ��¸�ط����ΤϾ�ά�Ǥ��ʤ���

Makefile �ˤ����륵�ե��å����롼����� :

       .c.o:               �� �֡�.c�פ���֡�.o�פ���������Ȥ��ˤϡ�
               $(CC) -c $<    ���ĤǤ⤳�Υ��ޥ�ɤ�Ȥ�����
       
��������
�֤���ե�����ι��������פȤϡ����Υե����뤬�Ǹ�˽������줿 �����򤤤���
�ޥ���
Makefile ��ڤ˵��Ҥ��뤿��˻Ȥ��ѿ��Τ褦�ʵ�ǽ��


Last Modified: Fri Mar 21 19:59:29 JST 2008
Yusuke Shinyama