Linuxコマンド辞典 makeコマンド(ユーティリティ)
コンパイルやインストールを一括処理する「make」コマンドの概要と使い方を記載しています。
RHEL Fedora CentOS Vine Deblan Ubuntu Plamo
参考サイト:Man page of INSTALL
概要・使用方法
書式
$ make [オプション] [ターゲット・・・]
Makefileを読み込み、指定したターゲットを実行します。バッチ処理を実行する1つの手段として、プログラムのコンパイルなどに利用されます。makeはデフォルトで作業ディレクトリにあるMakefileを読み込みます。オプションで作業ディレクトリのMakefile以外を指定し、別のターゲットを実行することもできます。
主なターゲット
all | プログラム全体を生成する |
install | インストールを行う |
clean | 不要なファイルを削除する |
Makefileの書式
clean:
rm *~ a.out
build: clean
cc -o gikope gikope.c
上記例では、「clean」と「build」というターゲットが定義されています。「clean」ターゲットでは、「*~」と「a.out」というファイルの削除を定義しています。ターゲット内のコマンドで「tab」でインデントされている必要があります。次の「build」ターゲットの後ろに「clean」を実行する指定がされています。buildターゲット実行前に「clean」というターゲットを実行し、その後指定されている「cc -o gikope gikope.c」を実行します。
「cc -o gikope gikope.c」は、gikope.cというC言語ソースファイルからgikopeという実行ファイルを作成します。また、Makefileの中で変数を持つこともできます。makeの後に「変数=値」でその変数を実行時に上書きすることもできます。
Makefile作成例
#
# Makefile
#
prefix=/usr
bindir=${prefix}/bin
RM = /bin/rm
CC = /usr/bin/cc
INSTALL = /usr/bin/cc
all: clean build install
clean:
${RM} -f a.out *~ hello
build:
${CC} -o hello hello.c
install:
${INSTALL} hello ${bindir}
CentOS系では「yum groups install “Development Tools”」、UbuntuやRaspbian、WSLでは「apt install build-essential」を実行することで、開発パッケージ一式がインストールされます。開発関連のパッケージをここにインストールするよりも効率的です。
オプション
-C ディレクトリ名 –directory | 指定ディレクトリに移動してからMakefileを読み込み |
-d | デバック情報を出力する |
-e –environment-overrides | Makefileの変数を環境変数で上書きする |
-f ファイル名 –file=ファイル名 –makefile=ファイル名 | 指定したファイルを利用してmakeを実行する(デフォルトはMakefileを読み込む) |
-k –keep-going | エラーがでても可能な限り止めずに進める |
-s –silent、 –quiet | コマンドの実行時に指示されたコマンドを表示しない |
–no-print-directory | ディレクトリ移動の際にそれを表示しない |
-j 数値、 –jobs 数値 | 同時に実行するジョブの数を指定する |
-n、 –just-print、 –dry-run | 実際には何も行わず実行するコマンドだけ表示する |
makeの実行
$ make
cleanターゲットだけの実行
$ make clean
$ make -s clean #ターゲットで指定したコマンドを表示しない
環境変数を変更して実行
$ make CC=/usr/bin/gcc-4.9