GNU Make makefileでターゲットの前提条件を照会する方法は?
たとえば、ターゲットが次のように指定されている場合:
fred: wilma barney betty
次の前提条件を印刷したいと思いますfred
。
$ make some_action fred
wilma barney betty
答え1
たぶん試験運営をお探しですか?
make --dry-run fred
マニュアルページでは、試運転に関する情報を提供します。
-n, --just-print, --dry-run, --recon
Print the commands that would be executed, but do not
execute them.
したがって、直接リストではなく間接リストが提供されます。なぜなら彼が依存するタスクを実行したいからです。
答え2
もう1つの可能性は「データベース印刷」オプションですが、必要なものよりも多くの情報を提供します。マニュアルから:
‘-p’
‘--print-data-base’
Print the data base (rules and variable values) that results from reading the
makefiles; then execute as usual or as otherwise specified. This also prints the
version information given by the ‘-v’ switch (see below). To print the data base
without trying to remake any files, use ‘make -qp’. To print the data base of
predefined rules and variables, use ‘make -p -f /dev/null’. The data base output
contains file name and line number information for recipe and variable
definitions, so it can be a useful debugging tool in complex environments.
しかし、公正な警告です。この混乱を注意深く見てください。〜する後処理なしで残酷になります。
答え3
Makefileが次のようになるとします。
.PHONY: wilma barney betty fred: wilma barney betty
最新バージョン作り直す--profile
確認された依存関係グラフに変換できるデータを出力するオプションがあります。データファイルの出力形式は callgrind が使用する形式なので、出力データからチャートを生成するには別のプログラムが必要です。バラよりhttps://github.com/rocky/remake/tree/master/profile
以前のバージョンのリメイクでは、次のように依存関係を取得できます。
$リメイク-X -fメイクファイル GNU Make 4.1+dbg0.91 x86_64-unknown-linux-gnu用に特別に作成 著作権(C)1988-2014フリーソフトウェア財団、Inc. 著作権(C)2015ロッキーバーンスタイン。 ライセンス GPLv3+: GNU GPL バージョン 3 以降 これはフリーソフトウェアなので、自由に変更して再配布できます。 法律が許す限り、いかなる保証も提供されません。 メイクファイルを読む... メイクファイルの更新.... アップデート対象... 「fred」ファイルが存在しません。 "wilma"ファイルが存在しません。 「Wilma」目標を再度実行する必要があります。 ターゲットファイル"wilma"を正常にコピーしました。 <- (/tmp/??:0) ウィルマ リメイク<0>ターゲットフレッド依存性 フレッド: ウィルマ・バニー・ビーティ リメイク<1>辞める リメイク:そうですね…
実行したコマンドをファイルに入れると、次のようになりますcmds.txt
。
target fred depend quit
その後、次を実行できます。
cat cmds.txt | remake -X -f Makefile
依存関係名を使用して上記の内容を実行するプログラムの作成など、より複雑なタスクを実行する方法についての練習として残します。