Think Twice
IT技術メモ | Makeのメモ
Created: 2023-05-29 / Updated: 2023-05-29

Makeの使い方


Makeはプログラムのビルドプロセスを自動化するためのツールです。
簡単な使い方をメモしておきます。

目次


Makefileの作成

まず、Makefileを作成します。
Makefileターゲットルールから構成されます。
ターゲットは通常、生成されるファイル(例えば、実行可能ファイルやオブジェクトファイル)を指します。
ルールは、そのターゲットを構築するために必要なコマンドと、そのターゲットの依存関係を指します。

基本的なMakefileの形式

Makefile
Copy
target: dependencies
    command
このメモではサンプルコードのcommandの前がスペースとなっていますが、実際はタブでインデントするようにしてください。
タブでインデントされていないと実行できずエラーとなります。

実行

echoするだけの例

Makefile
Copy
greet:
    echo "Hello, World!"

ファイルに依存してコマンドを実行する例

ここでは、C言語をコンパイルする例としてご紹介します。

Makefile
Copy
hello: hello.c
    gcc -o hello hello.c

Makefileの名前

Makefileの一般的なファイル名はMakefileです(拡張子なし)。
GNU makeはデフォルトでこの名前のファイルを探すようです。

自由な名前を付けたい場合

自由な名前のMakefileを作りたい場合は実行するときに-fオプションでファイル名を指定して実行することになります。

my.make というファイルを作成した場合
Copy
make -f my.make

便利な実行方法

ターゲットを省略して実行

.PHONYターゲットというものを作成すると、makeコマンド実行時にターゲットを省略できます。
ここで指定したターゲットがデフォルトで実行されます(例としてGo言語のビルドを実行しています)。

Makefile
Copy
.PHONY: build

build:
    go build -o myprogram main.go

一括で実行

Makefile
Copy
.PHONY: windows linux darwin

windows:
    GOOS=windows GOARCH=amd64 go build -o myprogram_win.exe

linux:
    GOOS=linux GOARCH=amd64 go build -o myprogram_linux

darwin:
    GOOS=darwin GOARCH=amd64 go build -o myprogram_mac

それぞれ分けて実行する場合

上記のMakefileを用意した状態で、以下コマンドを実行します。

Copy
make windows  # Windows向けの実行可能ファイルを生成
make linux    # Linux向けの実行可能ファイルを生成
make darwin   # macOS向けの実行可能ファイルを生成


参考

参照

Special thanks