2014年5月2日金曜日

Makefileのメモ


以下はMakefileを学習したときのメモ
  • http://shin.hateblo.jp/entry/2012/05/26/231036を参考にした。
  • -oで実行フィアル名の指定。
  • -c オプションでコンパイルのみ実行。リンクはしない。
  • -gでデバッグ情報付加。-Wallでwarningをすべて表示する。
  • ターゲットを分けて書くことで、一部を更新したときに全部をコンパイルしなくて済む。
  • clean: でファイルを消去したりできるけど、このときcleanというファイル存在するとややこしくなるので、.PHONY: clean
  • headerファイルの更新を反映させるために依存ファイルに.hを加える。
  • $@でターゲット名を表す
  • $< で依存ファイルの先頭を表す。
  • $^で依存ファイルのリスト
  • suffix ruleを使えば、拡張子の同じものはまとめて記述できる。
最終的に以下のようになった。といっても上のリンクと同じ。

# Makefile
program = hello
objs = hello.o
CXX = g++
CFLAGS = -g -Wall

#.PHONY: all
#all: $(program)

#primary target
$(program): $(objs) 
    $(CXX) -o $@ $^

#suffix rule
.SUFFIXES: .cpp .o

.cpp .o:
    $(CXX) $(CFLAGS) -c $<

#headers
#hello.o: hello.h

.PHONY: clean
clean:
    rm -f $(program) $(objs)

0 件のコメント:

コメントを投稿