プログラム言語第一

makeを使う
数理情報システム工学科
担当: 汐月哲夫
2015/10/1
プログラミング方法論
[email protected]
1
make とは。。。
• 大規模なプログラム開発(教育)において、ソースファイ
ルの修正と再コンパイル頻繁に繰り返す作業において有
益なユーティリティ
• 詳細情報は (/usr/info/) make.info にある( man コマンド
の情報は必ずしも最新ではない)
• ファイルの依存関係、作業内容を make の文法に従って
記述するだけ(プロジェクト管理情報)で
• 操作は簡単
2015/10/1
プログラミング方法論
[email protected]
2
make の使い方
(1) make の文法規則に従って makefile を作成する(ファイ
ル名=‘Makefile’ または ‘makefile’)
(2) コマンド行から
make <ターゲット>(改行)
と入力する
注1: -f <ファイル名>を指定すると Makefile 以外のファイル名が使用可能
注2: <ターゲット>を省略すると先頭のターゲットを仮定
2015/10/1
プログラミング方法論
[email protected]
3
使用例(1)
DEPENDENCY
Makefile の記述例
ターゲット(TARGET)
ex005 : ex005.c
gcc -o ex005 ex005.c
COMMAND
タブで開ける
make の実行
% make(改行)
または
%make ex005(改行)
2015/10/1
プログラミング方法論
[email protected]
4
make
TARGET:
出力ファイル名(実行ファイル名、オブジェクトファイル名)、
アクション名(clear,…)
DEPENDENCIES:
入力ファイル(ソースファイル、ヘッダファイル)、依存ファイル
COMMAND:
シェルコマンド(gcc, echo, rm, …)
2015/10/1
プログラミング方法論
[email protected]
5
使用例(2:依存関係の管理)
Makefile の記述例
ex1-4: ex1-4.o
gcc -o ex1-4 ex1-4.o
ex1-4.o: ex1-4.c
gcc -c ex1-4.c
clean:
rm *.o *~ core
2015/10/1
プログラミング方法論
[email protected]
6
使用例(3:マクロ)
Makefile の記述例
マクロ定義
CC = gcc
CFLAGS =
ex1-4: ex1-4.o
$(CC) $(CFLAGS) -o ex1-4 ex1-4.o
ex1-4.o: ex1-4.c
$(CC) $(CFLAGS) -c ex1-4.c
clean:
rm *.o *~ core
展開
2015/10/1
プログラミング方法論
[email protected]
7
使用例(4:暗黙の了解)
Makefile の記述例
CC = gcc
CFLAGS =
ex1-4: ex1-4.o
ex1-4.o: ex1-4.c
clean:
rm *.o *~ core
*.c, *.o はコンパイルして作るものであることを
知っている。
2015/10/1
プログラミング方法論
[email protected]
8
使用例(5:$変数)
Makefile の記述例
CC = gcc
CFLAGS =
ex1-4 : ex1-4.c
$(CC) $(CFLAGS) -o $@ $<
clean:
rm *.o *~ core
$@
$<
$^
2015/10/1
TARGET
DEPENDENCY の先頭
DEPENDENCY の全体
プログラミング方法論
[email protected]
9
make に関する詳細情報
• /usr/info/make.info* を読む
• 読み方
– emacs のコマンドラインから M-x info<CR>
– mGNU make で上記ファイルを選択
– $変数は Using Variables → Automatic
– 省略型は Implicit Rules
• (注意)infoファイルが解凍されていない場合は
gunzip で要解凍
2015/10/1
プログラミング方法論
[email protected]
10