make – ビルドやタスクを自動化するコマンド

ビルド

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 オプションによる並列実行はビルドを高速化するが、依存関係の指定が不十分だと失敗することがあります。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント