   Linux: 
MAKE
*	make 
*	make-file
*	 make 
make 
  ,       
     .   make 
   C-     
   ,    make    
.  ,   make   
.   e    ,    
     ,   .
make-file 
   make,   ,  make-, 
          
   .       
, ,   ,       .  
 make-    GNUmakefile, makefile  Makefile, 
      .    
 ,        -f.  
 make-  ,         
 make.  make-   ()  : 
 =  ...  ... :  ... 
            1  
            2  =  ...  ... : 
 ...             1             2 
 .. 
     ,   make. 
      .     
  , , , clean. 
 -  ,      
.      .  -  ,  
 make.        -    
 .  :    , 
 ,   .       
  ,     .   # 
  .   #   .   
          .
 make 
: 
make [] [='abc'] []
      . 
 -  ,   . 
 ='abc' - .     
    ,    make-. 
: 
-f file -    make-,   ,    
GNUmakefile, makefile  Makefile. 
-n -     ,   . 
-t -       . 
-q -        .
 
    
MAKE
*	  Makefile 
*	  
  Makefile 
  .     make   
    make-.       ,  
        . ,   , 
     ,          '/' 
..    ;  ,     , 
  . 
          
     shell. 
     ,   
    ,     
    wildcard.
 
objects := $(wildcard *.o 
edit: *.o 
     cc -o edit *.o 
           
  gcc -M file.c  gcc -MM file.c.     
    .     
 .    ,    
        .

 

$@ 
   .     
 ,  ,   
  .
$<
  .     
   ,     
,   .
$?
  ,    
,  ,     .
$^
  ,    . 
         
 ,   '$^'  
     .
$+
    '$^',  
,     
 ,      make-. 
        
 ,    
     
$*
      (. 
).       
  ,    
'%'   .     
'dir/a.foo.b',      - 'a.%.b',    
'dir/foo'.      , 
  .      
     ,  
  .   
     
  
          
    .      : 
.out, .a, .ln, .o, .c, .cc, .C, cpp, .p, .f, .F, .r, .y, .l, .s, .S, .mod, .sym, .def, .h, .info, .dvi, .tex, 
.texinfo, .texi, .txinfo, .w, .ch, .web, .sh, .elc, .el.     
 ,      
 , ,      
 .
 
 


   C- 
'file.c'
'file.o'
$(CC) -c $(CPPFLAGS) $(CFLAGS) 
file.c
     
 C++ 
'file.cc' 
 'file.C'
'file.o'
 $(CXX) -c $(CPPFLAGS) 
$(CXXFLAGS) file .cc
     
 
'file.f'
'file.o'
$(FC) -c $(FFLAGS) file .f
 
 MakeFile
 makefile 
   . 
#default target - file edit  
edit : main.o kbd.o command.o display.o \ 
        insert.o search.o files.o utils.o 
         cc -o edit main.o kbd.o command.o display.o \  
                    insert.o search.o files.o utils.o  
 
main.o : main.c defs.h 
        cc -c main.c  
kbd.o : kbd.c defs.h command.h 
        cc -c kbd.c 
command.o : command.c defs.h command.h  
        cc -c command.c  
display.o : display.c defs.h buffer.h  
        cc -c display.c 
insert.o : insert.c defs.h buffer.h  
        cc -c insert.c  
search.o : search.c defs.h buffer.h  
        cc -c search.c  
files.o : files.c defs.h buffer.h command.h  
        cc -c files.c  
utils.o : utils.c defs.h  
        cc -c utils.c 
clean :  
       rm edit main.o kbd.o command.o display.o \  
          insert.o search.o files.o utils.o 
 , make     (  ,    
   '.').      .    
  edit.   edit    ,    ,  
  .   ,   make   
  ,       ,  
  edit.          
 .    ,    
    ,   ,  , 
  ,      . 
 clean      , , clean  
          .     
clean   .         
 make: make clean 
          
( )
objects = main.o kbd.o command.o display.o \  
          insert.o search.o files.o utils.o  
 
edit : $(objects)  
        cc -o edit $(objects)  
main.o : defs.h  
kbd.o : defs.h command.h  
command.o : defs.h command.h  
display.o : defs.h buffer.h 
insert.o : defs.h buffer.h 
search.o : defs.h buffer.h 
files.o : defs.h buffer.h command.h 
utils.o : defs.h  
.PHONY : clean  
clean : 
        -rm edit $(objects) 
 objects       
,      make      
file.c: file.o   cc -c file.c 
  .PHONY    make     
 -,      .    
,         clean  
 make clean. 
        : 
objects = main.o kbd.o command.o display.o \  
          insert.o search.o files.o utils.o  
 
edit : $(objects)  
       cc -o edit $(objects)  
 
$(objects) : defs.h  
kbd.o command.o files.o : command.h  
display.o insert.o search.o files.o : buffer.h 
  ,         
defs.h,        . 

