「make」の版間の差分

提供: FreeBSD入門
移動: 案内検索
(ページの作成:「make コマンドとは、プログラムの簡単にメンテナンスする目的で設計されたプログラムです。Unixでは、プログラムのビル...」)
 
(相違点なし)

2014年5月18日 (日) 14:47時点における最新版

make コマンドとは、プログラムの簡単にメンテナンスする目的で設計されたプログラムです。Unixでは、プログラムのビルド(コンパイル)処理の自動化でよく使用されます。FreeBSDのmakeは、GNU make(gmake)とは、とは異なるプログラムです。文法の違い(方言)がありますので、マルチプラットフォームなMakefileを書きたい場合には、gmake向けに書くのがよいでしょう。

読み方

make
めいく

概要

make は、FreeBSDのビルド(make world)でも利用されるプログラムです。 makeは、Makefileに基いて、ターゲットに対する一連の処理を行います。

一連の処理の例を以下に挙げます。

  • プログラムのビルド
  • プログラムのインストール
  • 作業ディレクトリの掃除

portsコレクションを例に説明すると以下のようになります。

make
アプリケーションのビルド
make install
アプリケーションのインストール
make clean
ワーキングディレクトリ(work)の掃除

インストール

makeは、ベースシステムに組み込まれたプログラムです。gmakeは、別途インストールが必要です。

$ sudo pkg install gmake

設定

/etc/make.conf にシステムワイドな設定を書くことができます。 portsmake worldへ指示を与えることができます。

Makefile

EXEC=program
SRCS=main.c foo.c
CFLAGS+=-Wall
$(EXEC): $(SRCS)
	$(CC) $(CFLAGS) $< -o $@
clean::
	@rm -f $(EXEC)

使い方

コマンドラインオプション

usage: make [-BeikNnqrstWwX]
            [-C directory] [-D variable] [-d flags] [-f makefile]
            [-I directory] [-J private] [-j max_jobs] [-m directory] [-T file]
            [-V variable] [variable=value] [target ...]

make world の高速化

makeのプロセスを並列実行することで、大きなアプリケーションのビルドを高速化できます。make world など時間のかかる処理などの高速化で-jオプションを使用します。

make -j 4

ただし、並列実行した結果、ビルドが失敗したりすることがあります。その場合は、-jオプションなしでビルドしなおす必要があります。

任意のMakefileを指定する

$ make -f build.mk

失敗を無視してビルドする

コマンドが失敗するとmakeは、そこで、ビルドをやめますが、-kオプションで無視して続けることができます。

$ make -k

変数を上書きをする

コンパイラやコンパイルオプションをほかのものに一時的に変更するといったことができます。 コンパイラの変数は、CCです。

$ make CC=clang

以下は、CFLAGSを指定する例です。

$ make CFLAGS=-lpthread

関連項目