Manpages

名 前

make − プ ロ グ ラ ム 群 を 管 理 す る た め の GNU make ユ ー テ ィ リ テ ィ

書 式

make [ −f makefile ] [ options ] ... [ targets ] ...

警 告

こ の オ ン ラ イ ン マ ニ ュ ア ル は 、 GNU make の ド キ ュ メ ン ト の 一 部 を 抜 粋 し た も の で あ る 。 こ の フ ァ イ ル は あ ま り 頻 繁 に は 更 新 さ れ な い 。 と い う の も 、 GNU プ ロ ジ ェ ク ト で は nroff が 使 わ れ て い な い か ら で あ る 。 完 全 か つ 最 新 の 内 容 の ド キ ュ メ ン ト を 見 る に は 、 info フ ァ イ ル make.info を 参 照 す る こ と 。 こ れ は texinfo の ソ ー ス フ ァ イ ル make.texi か ら 生 成 さ れ る 。

説 明

make ユ ー テ ィ リ テ ィ の 目 的 は 、 大 き な プ ロ グ ラ ム の 中 の 再 コ ン パ イ ル す る 必 要 が あ る 部 分 を 自 動 的 に 決 定 し 、 再 コ ン パ イ ル の た め の コ マ ン ド を 実 行 す る こ と で あ る 。 こ の マ ニ ュ ア ル で は 、 GNU が 実 装 し た make の 説 明 を 行 っ て い る 。 こ れ は Richard Stallman と Roland McGrath が 書 い た も の で 、 現 在 は Paul Smith に よ り 維 持 さ れ て い る 。 例 と し て は C 言 語 の プ ロ グ ラ ム を 用 い て い る が 、 こ れ は C 言 語 が 最 も 一 般 的 だ か ら で あ る 。 make は 、 シ ェ ル コ マ ン ド か ら コ ン パ イ ラ を 起 動 で き る ど ん な プ ロ グ ラ ミ ン グ 言 語 と で も 組 み 合 わ せ て 使 用 で き る 。 実 際 、 make の 利 用 対 象 は プ ロ グ ラ ム だ け に 限 ら れ な い 。 make は 、 あ る フ ァ イ ル を 書 き 換 え た ら 、 そ の 書 き 換 え た フ ァ イ ル を 元 に し て 別 の フ ァ イ ル も 自 動 的 に 更 新 し な け れ ば な ら な い よ う な 任 意 の 作 業 で 利 用 で き る 。

make を 使 う 準 備 を す る た め に は 、 ま ず makefile と 呼 ば れ る フ ァ イ ル を 書 か な け れ ば な ら な い 。 こ の フ ァ イ ル は 、 プ ロ グ ラ ム を 構 成 す る フ ァ イ ル 間 の 関 係 と 各 フ ァ イ ル を 更 新 す る た め の プ ロ グ ラ ム を 記 述 し た も の で あ る 。 プ ロ グ ラ ム の 場 合 は 普 通 、 実 行 フ ァ イ ル は オ ブ ジ ェ ク ト フ ァ イ ル に よ っ て 更 新 さ れ 、 こ の オ ブ ジ ェ ク ト フ ァ イ ル も ま た ソ ー ス フ ァ イ ル の コ ン パ イ ル に よ っ て 生 成 さ れ る 。 適 切 な makefile さ え あ れ ば 、 ソ ー ス フ ァ イ ル を 一 部 変 更 す る 度 に

make と い う 簡 単 な シ ェ ル コ マ ン ド を 実 行 す る だ け で 、 必 要 な 再 コ ン パ イ ル が 全 て 行 わ れ る 。 make プ ロ グ ラ ム は 、 makefile デ ー タ ベ ー ス と フ ァ イ ル の 最 終 更 新 時 刻 を 用 い て 、 更 新 す る 必 要 が あ る フ ァ イ ル を 見 つ け る 。 こ の よ う な フ ァ イ ル に 対 し て 、 make は デ ー タ ベ ー ス に 記 録 さ れ て い る コ マ ン ド を 実 行 す る 。

makemakefile 中 の コ マ ン ド を 実 行 し て 、 1 つ 以 上 の タ ー ゲ ッ ト 名 称 を 更 新 す る 。 こ の 名 称 は 普 通 は プ ロ グ ラ ム で あ る 。 −f が 無 い 場 合 、 make は makefile と し て 、 GNUmakefile, makefile, Makefile を こ の 順 に 参 照 す る 。 通 常 、 ユ ー ザ が makefile と し て 使 う べ き な の は 、 makefile ま た は Makefile で あ る 。 (筆 者 は Makefile を 推 奨 す る 。 な ぜ な ら 、 こ の 名 前 で あ れ ば 常 に デ ィ レ ク ト リ 表 示 の 先 頭 近 く に 現 わ れ る し 、 README の よ う な 他 の 重 要 フ ァ イ ル の す ぐ 近 く に 来 る か ら で あ る 。 ) 最 初 に チ ェ ッ ク さ れ る 名 前 で あ る GNUmakefile は 、 大 抵 の 場 合 は 好 ま し く な い 。 こ の 名 前 を 使 う べ き な の は 、 GNU make に 特 化 し て お り 、 他 の バ ー ジ ョ ン の make で は 処 理 で き な い makefile を 使 う 場 合 で あ る 。 makefile が ’−’ な ら ば 、 標 準 入 力 が 読 み 込 ま れ る 。

make が タ ー ゲ ッ ト を 更 新 す る の は 、 タ ー ゲ ッ ト が 依 存 し て い る 必 要 フ ァ イ ル が タ ー ゲ ッ ト よ り 後 に 変 更 さ れ た 場 合 と 、 タ ー ゲ ッ ト が 存 在 し な い 場 合 で あ る 。

オ プ シ ョ ン

−b, −m こ れ ら の オ プ シ ョ ン は 無 視 さ れ る 。 こ れ ら は 他 の バ ー ジ ョ ン の make と の 互 換 性 の た め の も の で あ る 。
−B
, −−always−make 無 条 件 に 全 て の タ ー ゲ ッ ト を make す る 。
−C
dir, −−directory=dir

makefile を 読 み 込 む な ど の 動 作 の 前 に 、 デ ィ レ ク ト リ dir に 移 動 す る 。 複 数 の −C オ プ シ ョ ン が 指 定 さ れ て い る 場 合 、 そ れ ぞ れ は 前 の 指 定 に 対 す る 相 対 パ ス と 解 釈 さ れ る 。 例 え ば 、 −C / −C etc は −C /etc と 同 じ 意 味 で あ る 。 こ の オ プ シ ョ ン は 通 常 、 make を 再 帰 的 に 呼 び 出 す 時 に 使 わ れ る 。

−d 通 常 の 処 理 情 報 に 加 え て 、 デ バ ッ グ 情 報 を 出 力 す る 。 デ バ ッ グ 情 報 に 含 ま れ る の は 、 再 構 築 の 対 象 と な っ て い る フ ァ イ ル 、 比 較 さ れ る フ ァ イ ル 時 間 と そ の 結 果 、 実 際 に 再 構 築 す る 必 要 が あ る フ ァ イ ル 、 候 補 に な っ て い た り 実 際 に 適 用 さ れ る 暗 黙 の ル ー ル な ど 、

make が 動 作 を 決 め る た め に 必 要 な も の 全 て で あ る 。
−−debug
[=FLAGS] 通 常 の 処 理 内 容 に 加 え て デ バ ッ グ 情 報 を 表 示 す る 。 FLAGS が 省 略 さ れ た 場 合 、 −d が 指 定 さ れ た 場 合 と 同 じ 動 作 と な る 。 FLAGS に は 次 の 値 を 指 定 す る こ と が で き る 。 a は 全 て の デ バ ッ グ 情 報 を 出 力 す る (−d と 同 じ )。 b は 基 本 的 な デ バ ッ グ 情 報 を 出 力 す る 。 v は 基 本 的 な デ バ ッ グ 情 報 を よ り 詳 細 に 出 力 す る 。 i は 暗 黙 の ル ー ル を 表 示 す る 。 j は コ マ ン ド の 起 動 の 詳 細 を 出 力 す る 。 m は makefile の 再 make 時 に デ バ ッ グ 情 報 を 出 力 す る 。
−e
, −−environment−overrides 環 境 変 数 か ら 与 え る 変 数 を 指 定 す る 。 こ れ は makefile の 変 数 よ り も 優 先 さ れ る 。
−f
file, −−file=file, −−makefile=FILE

file を makefile と し て 使 用 す る 。

−i, −−ignore−errors フ ァ イ ル の 再 構 築 時 に 実 行 し た コ マ ン ド で 起 き た エ ラ ー を 全 て 無 視 す る 。
−I
dir, −−include−dir=dir イ ン ク ル ー ド す る makefile を 検 索 す る デ ィ レ ク ト リ dir を 指 定 す る 。 複 数 の −I オ プ シ ョ ン を 使 っ て 複 数 の デ ィ レ ク ト リ を 指 定 し た 場 合 、 デ ィ レ ク ト リ の 検 索 は 指 定 し た 順 で 行 わ れ る 。 make の 他 の フ ラ グ に 対 す る 引 き 数 と 異 な り 、 −I に 与 え る 引 き 数 は 、 フ ラ グ の 直 後 に 記 述 で き る 。 つ ま り 、 −Idir と い う 記 述 も −I dir と 共 に 許 さ れ る 。 こ の 記 法 を 許 す の は 、 C プ リ プ ロ セ ッ サ の −I フ ラ グ と の 互 換 性 の た め で あ る 。
−j
[jobs], −−jobs[=jobs] 同 時 に 実 行 で き る jobs (コ マ ン ド ) の 数 を 指 定 す る 。 −j オ プ シ ョ ン が 複 数 個 指 定 さ れ た 場 合 は 、 最 後 の 指 定 が 有 効 に な る 。 引 き 数 無 し で −j オ プ シ ョ ン が 与 え ら れ た 場 合 、 make は 同 時 に 実 行 で き る ジ ョ ブ の 数 を 制 限 し な い 。
−k
, −−keep−going エ ラ ー が 起 き て も で き る 限 り 実 行 を 継 続 し よ う と す る 。 失 敗 し た タ ー ゲ ッ ト と そ の タ ー ゲ ッ ト に 依 存 し て い る フ ァ イ ル は 再 生 成 さ れ な い も の の 、 そ の タ ー ゲ ッ ト に 関 す る 他 の 依 存 関 係 は 処 理 す る こ と が で き る 。
−l
[load], −−load−average[=load] 他 の ジ ョ ブ が 動 作 し て お り 、 ロ ー ド ア ベ レ ー ジ が 少 な く と も load (浮 動 小 数 )な ら ば 、 新 し い ジ ョ ブ (コ マ ン ド )を 実 行 し な い こ と を 指 定 す る 。 引 き 数 無 し の 場 合 に は 、 以 前 に 指 定 し た 負 荷 の 制 限 が 取 り 除 か れ る 。
−L
, −−check−symlink−times シ ン ボ リ ッ ク リ ン ク と タ ー ゲ ッ ト の う ち 最 新 の mtime を 使 用 す る 。
−n
, −−just−print, −−dry−run, −−recon 実 行 す る コ マ ン ド の 表 示 だ け を 行 い 、 (特 定 の 状 況 を 除 い て は ) 実 際 の 実 行 を 行 わ な い 。
−o
file, −−old−file=file, −−assume−old=file

file が 依 存 先 の フ ァ イ ル よ り 古 い 場 合 で あ っ て も 再 構 築 を 行 わ な ず 、 file が 変 更 さ れ て も 他 の フ ァ イ ル の 再 構 築 を 一 切 行 わ な い 。 本 質 的 に は 、 そ の フ ァ イ ル は 非 常 に 古 い も の と し て 扱 わ れ 、 規 則 が 無 視 さ れ る 。

−p, −−print−data−base

makefile を 読 み 込 ん で 得 ら れ た デ ー タ ベ ー ス (規 則 と 変 数 の 値 )を 出 力 す る 。 特 に 指 定 し な い 限 り 、 そ の 後 の 動 作 は 通 常 通 り で あ る 。 ま た 、 −v オ プ シ ョ ン で 得 ら れ る バ ー ジ ョ ン 情 報 も 出 力 す る 。 フ ァ イ ル を 全 く 再 構 築 す る こ と な く 、 デ ー タ ベ ー ス の 表 示 だ け を 行 う に は make −p −f/dev/nul を 用 い る こ と 。

−q, −−question 「 問 い 合 わ せ モ ー ド 」 で 動 作 す る 。 コ マ ン ド を 全 く 実 行 せ ず 、 何 も 表 示 し な い 。 た だ 、 指 定 さ れ た タ ー ゲ ッ ト が 既 に 最 新 な ら ば 終 了 ス テ ー タ ス 0 を 返 し 、 そ う で な け れ ば 0 で な い ス テ ー タ ス を 返 す 。
−r
, −−no−builtin−rules 組 み 込 み の 暗 黙 的 ル ー ル を 使 用 し な い 。 ま た 、 添 字 規 則 で 使 う デ フ ォ ル ト の 添 字 の リ ス ト も 全 て 消 去 す る 。
−R
, −−no−builtin−variables 組 み 込 み の 変 数 を 一 切 定 義 し な い 。
−s
, −−silent, −−quiet 静 か に 動 作 す る 。 コ マ ン ド を 実 行 す る 際 に 、 コ マ ン ド の 表 示 を 行 わ な い 。
−S
, −−no−keep−going, −−stop

−k オ プ シ ョ ン の 影 響 を 打 ち 消 す 。 こ の オ プ シ ョ ン が 必 要 に な る の は 、 make を 再 帰 的 に 用 い て い る た め に −k オ プ シ ョ ン が ト ッ プ レ ベ ル の make か ら MAKEFLAGS を 通 じ て 継 承 さ れ る 場 合 や 、 環 境 変 数 MAKEFLAGS で −k を 設 定 し て い る 場 合 だ け で あ る 。

−t, −−touch コ マ ン ド を 実 行 せ ず に フ ァ イ ル に タ ッ チ す る (実 際 に は フ ァ イ ル を 変 更 せ ず 、 最 新 の 印 を 付 け る )。 こ の オ プ シ ョ ン を 使 う と 見 か け 上 コ マ ン ド が 実 行 さ れ た こ と に な り 、 後 で 起 動 す る make を だ ま す こ と が で き る 。
−v
, −−version

make プ ロ グ ラ ム の バ ー ジ ョ ン お よ び 著 作 権 表 示 、 作 者 の リ ス ト 、 無 保 証 で あ る こ と の 宣 言 を 出 力 す る 。

−w, −−print−directory 他 の 処 理 を 行 う 前 後 に 、 作 業 デ ィ レ ク ト リ を 表 示 す る 。 再 帰 的 な make コ マ ン ド が 複 雑 な 入 れ 子 に な っ て い る 状 況 で エ ラ ー を 追 跡 す る 際 に 便 利 で あ る 。
−−no−print−directory

−w を オ フ に す る 。 −w が 暗 黙 で 指 定 さ れ る 場 合 で も オ フ に な る 。

−W file, −−what−if=file, −−new−file=file, −−assume−new=file タ ー ゲ ッ ト file が 変 更 さ れ た ば か り の も の と し て 動 作 す る 。 −n フ ラ グ を 指 定 し て い る 場 合 、 そ の フ ァ イ ル を 変 更 す る と ど う な る か が 表 示 さ れ る 。 −n が 指 定 さ れ て い な い 場 合 の 動 作 は 、 make の 実 行 前 に 、 指 定 さ れ た フ ァ イ ル に 対 し て touch を 行 っ た 時 と ほ ぼ 同 じ で あ る 。 た だ し 、 修 正 時 刻 が 変 更 さ れ る の は make の 内 部 だ け で あ る 点 が 異 な る 。
−−warn−undefined−variables
未 定 義 の 変 数 が 参 照 さ れ た 際 に 警 告 を 出 す 。

終 了 ス テ ー タ ス

全 て の makefile が 正 常 に 読 み 込 ま れ 、 ビ ル ド 対 象 の ど の タ ー ゲ ッ ト も 失 敗 し な か っ た 場 合 、 GNU make は ス テ ー タ ス 0 で 終 了 す る 。 −q フ ラ グ が 使 用 さ れ 、 make が タ ー ゲ ッ ト の 再 ビ ル ド が 必 要 と 判 断 し た 場 合 に は 、 ス テ ー タ ス 1 が 返 さ れ る 。 何 か エ ラ ー が 発 生 し た 場 合 は ス テ ー タ ス 2 が 返 さ れ る 。

関 連 項 目

The GNU Make Manual

バ グ

The GNU Make Manual の 「 問 題 点 と バ グ (Problems and Bugs)」 の 章 を 参 照 す る こ と 。

著 者

こ の オ ン ラ イ ン マ ニ ュ ア ル は ス タ ン フ ォ ー ド 大 学 の Dennis Morse 氏 が 寄 付 し た も の で あ る 。 そ の 後 Roland McGrath が 改 訂 し た 。 さ ら な る 改 訂 が Mike Frysinger か ら 提 供 さ れ た 。

著 作 権

Copyright (C) 1992, 1993, 1996, 1999, 2007 Free Software Foundation, Inc. This file is part of GNU make.

GNU Make is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.