以下は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 件のコメント:
コメントを投稿