make コマンドは、Makefile に記述されたルールをもとにプログラムのビルドや処理を自動化 するためのコマンドです。
ソースコードのコンパイルや依存関係の管理に広く使われますが、汎用タスクランナーとしても利用できます。
構文(Syntax)
make [オプション] [ターゲット...]
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | デフォルトターゲットを実行(通常は最初のルール) | make |
-f FILE | 指定した Makefile を使用 | make -f MyMakefile |
-C DIR | 指定ディレクトリで実行 | make -C src |
-j [N] | 並列実行(Nは同時ジョブ数、未指定なら制限なし) | make -j4 |
-n | 実際には実行せずコマンドを表示(ドライラン) | make -n |
-k | エラーが発生しても可能な限り続行 | make -k |
-B | すべてのターゲットを強制的に再ビルド | make -B |
-q | 更新が必要かどうかのみ確認(実行はしない) | make -q |
-s | コマンドを表示せず静かに実行 | make -s |
-t | 実行せずタイムスタンプのみ更新 | make -t |
実行例
デフォルトターゲットを実行
make
特定のターゲットを指定
make clean
make install
並列でビルド
make -j4
指定した Makefile を使って実行
make -f Makefile.debug
実行内容を確認(ドライラン)
make -n
出力例:
cc -c main.c -o main.o
cc -c utils.c -o utils.o
cc main.o utils.o -o myapp
エラーが出ても続行
make -k
更新が必要かどうか確認
make -q
終了コードで確認:
0: 更新不要1: 更新が必要2: エラー
エラー例(Makefile が存在しない)
make
出力例:
make: *** No targets specified and no makefile found. Stop.
関連コマンド
gcc/clang: C/C++ コンパイラ(makeでよく利用される)cmake: クロスプラットフォームのビルド自動化ツール(Makefile を生成可能)ninja: 高速ビルドシステム(Make の代替)autoconf/automake: 自動ビルド環境の生成ツール
備考
make自体は「ルール実行エンジン」であり、実際の処理内容は Makefile に依存 します。- Makefile はターゲット・依存関係・実行コマンドから構成されます。
例:app: main.o util.o gcc -o app main.o util.o main.o: main.c gcc -c main.c util.o: util.c gcc -c util.c clean: rm -f app *.o -jオプションによる並列実行はビルドを高速化するが、依存関係の指定が不十分だと失敗することがあります。
参考
- manページ: man7.org make(1)
- GNU Make マニュアル: https://www.gnu.org/software/make/manual/

コメント