make

[機能]

  プログラムの保守を行います

[形式]
make [option] [target-file]
	-f file : Makefile の指定します.指定されない場合は,「 Makefile 」,
	          または,「 makefile 」という名前のファイルが選択されます.
	          なお,Makefile は以下の様な形式をしています.
				target: target が参照しているファイル
				[TAB] target を更新するコマンド

	引き数 target-file が省略された時は,Makefile の中に最初に書かれたタ
	ーゲットを参照します.		
[使用例]

  1. 同じディレクトリにあるすべてのファイルを対象とする場合の例です.ターゲット lp は,プログラムをコンパイルし実行可能ファイルを作成します.ターゲット c は,コンパイルだけを実行します.
    LIBS = -lm
    #
    #     プログラム
    #
    OBJECT = lpg.o basho_n.o init.o input.o output.o plan.o
    #
    #     実行
    #
    lp: $(OBJECT)
    	gcc $(OBJECT) $(LIBS) -o lpg
    #
    #     コンパイル
    #
    c: $(OBJECT)
    			
  2. 異なるディレクトリにあるプログラムを対象とし,各プログラムのオブジェクトはライブラリ liblpg.a に保存する場合の例です.この例では,ファイル構造は以下のようになっているものとします.
    	/temp         lpg.c(主プログラム)
    	/temp/input   init.c input.c
    	/temp/output  output.c
    	/temp/sim     basho_n.c plan.c
    
    (ディレクトリ /temp にある Makefile )
    #
    #     全体の制御
    #
    LIBS   = -L/temp -llpg -lm
    SUBDIR = input sim output
    all: lpg.o ${SUBDIR}
    	gcc lpg.o $(LIBS) -o lpg
    ${SUBDIR}: FRC
    	cd $@; make
    FRC:
    
    (ディレクトリ /temp/input にある Makefile.プログラム input.c がデ
    ィレクトリ /temp/include にあるヘッダファイル command.h を必要と
    しているものとします)
    #
    #     入力と初期設定プログラム
    #
    LIB    = /temp/liblpg.a
    CFLAGS = -I /temp/include
    OBJECT = $(LIB)(input.o) $(LIB)(init.o)
    in: $(OBJECT)
    $(LIB)(input.o): /temp/include/command.h
    
    (ディレクトリ /temp/output にある Makefile )
    #
    #     出力プログラム
    #
    LIB    = /temp/liblpg.a
    OBJECT = $(LIB)(output.o)
    out: $(OBJECT)
    
    (ディレクトリ /temp/sim にある Makefile )
    #
    #     シミュレーションの実行プログラム
    #
    LIB    = /temp/liblpg.a
    OBJECT = $(LIB)(basho_n.o) $(LIB)(plan.o)
    sim: $(OBJECT)
    			
[参照]

gcc, sdb

菅沼ホーム 本文目次 演習問題解答例 付録目次 索引