Section Next|Prev|Up|Index|凡例


3.1.1 簡単な make の使い方

make コマンドは一般に makefile による記述がないと、なにもできないと思われがち ですが、実は暗黙のうちに定義されたルールに従って、makefile が無くても利用でき ます。
たとえば、 ファイル名とコンパイル方法との間にはある種の慣例が存在します。 例えば、 xxxx.c というファイルは、C言語のソースファイルで、コンパイル・コマンド は cc。 実行イメージ名は xxxx だというような物です。
【実行例】
	$ cat a.c
	main(){
		puts("hogehoge");
	}

	$ make a # a を作るには、a.c  を cc でコンパイルすればよい
	cc   a.c  -o a
	$ ./a
	hogehoge

	% make a # a は既に存在し a.c よりも新しい
	`a' is up to date.

また、ある程度のコンパイル・オプションは環境変数で与えることができます。
代表的な環境変数の一覧は以下の通りです。(なお例題は ksh で記述しています)
変数名 省略値 意味 例(ksh)
CC cc C コンパイラのコマンド名 export CC=c89
CFLAGS なし C コンパイラのオプション export CFLAGS="-DDEBUG -g"
LOADLIBES リンクライブラリ ld のオプション。 export LOADLIBES="-lXaw -lXt -lX11"
FC f77 Fortran コンパイラのコマンド名 (最近では F90C もある) export FC=f90

環境変数を用いた、少し複雑な makefile なしの make

	$ export CFLAGS="-g"
	$ export LOADLIBES="-lm"
	$ make a
	cc  -g a.c -lm -o a
なお、暗黙のルールは、つぎのコマンドにより確認できます。
	$ make -p
	# GNU Make 3.80
	# Copyright (C) 2002  Free Software Foundation, Inc.
	# This is free software; see the source for copying conditions.
	# There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
	# PARTICULAR PURPOSE.
	make: *** ターゲットがありません。中止。

	# Make データベース出力 Sun Oct 21 09:52:00 2007

	# 変数

	# 自動変数
	<D = $(patsubst %/,%,$(dir $<))
	# 自動変数
	?F = $(notdir $?)
			: (中略、以下抜粋)
	# デフォルト
	RM = rm -f
	# デフォルト

	# 環境変数
	CFLAGS = -g

	# デフォルト
	CC = cc

	# デフォルト
	COMPILE.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c

	# デフォルト
	SUFFIXES := .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
	#  実行するコマンド (ビルトイン):
		$(LINK.C) $^ $(LOADLIBES) $(LDLIBS) -o $@

				:

Section Next|Prev|Up|Index|凡例