名 前
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 は デ ー タ ベ ー ス に 記 録 さ れ て い る コ マ ン ド を 実 行 す る 。
make は makefile 中 の コ マ ン ド を 実 行 し て 、 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/.