【実行例】 $ 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) |
---|---|---|---|
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 $@ :