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