
下記のmakefileでPHONYの使い方が分からない。通常は、依存しないターゲットを作る時に使うがこの場合は依存する場合としない場合の両方で使われている。依存しない場合に使うのは分かるが、依存する場合に敢えてこのPHONYを使う必要がどこに有るのかが分からない。PHONYを使う事の必要性を教えてください。その時のmakefileを下記に示します。
1. SRC=message.c
2. OBJS=$(SRC:.c=.o)
3. PROG=message.exe
4. CC=gcc
5. CFLAGS=-Wall -O3
6. #LDFLAGS=-mwindows
7. RM=rm
8.
9. %.o: %.c
10. $(CC) $(CFLAGS) -o $@ -c $<
11.
12. .PHONY : all
13. all: $(PROG)
14.
15. $(PROG): $(OBJS)
16. $(CC) $(OBJS) $(LDFLAGS) -o $@
17.
18. .PHONY : clean
19. clean:
20. $(RM) $(OBJS)
12行目は依存しているが、18行目は依存していない。18行目は分かるが。果たして12行目で敢えて指定する事の必要性がどこに有るのかが分からない。必要性を教えてください。
No.2ベストアンサー
- 回答日時:
先のURLには「フォニーターゲットを使うのには、同名のファイルとの衝突の回避、パフォーマンスの向上という二つの理由があります。
」とあります。「暗黙のルールでの検索作業でもフォニーターゲットを飛ばします」ともあるので、.PHONYが無いと偶然「$(PROG)→all」の暗黙のルールが存在していた場合、そのルールが適用されることになります。
今回は暗黙のルールが無いと思われるので、.PHONY無しでも動作するでしょう。
無くてもよい。(cleanの方も、「clean」というファイルが無ければ、期待通りに動きます)
けど、あると更によい。(期待しないルールが適用される可能性が減る)
ということになります。
丁寧な説明有難う御座います。今度は分かりました。衝突の回避とパフォーマンスの向上と言うのも分かります。今回は、私の例示したmakefileのみを考えていましたので更に必要は無いと思っていましたので。
変に誤動作をする可能性も無きにしも有らずと言うのを避けると言う事でしょうか。それとそれに伴う負荷の軽減ですね。
分かりやすい説明有難う御座いました。
No.1
- 回答日時:
「依存しないターゲットを作る時に使う」というのは副次的なもので、主目的は「本当のファイル名ではないターゲット」を指定することです。
PHONYは有っても無くても動くと言う事でしょうか。単に明示化をするだけでしょうか。単に処理を実行させると言うのは分かりましたが。これを使う事の意味は分かりません。別に無くても良い物を何で使う様になるのかが分かりません。
この件についての回答をお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
#include <Windows.h>というヘ...
-
リンクの張り付けかたを教えて...
-
binファイルを解凍したいの...
-
jarファイル
-
jarファイルはzipファイルと同...
-
Seasar2のdiconファイルの読み方
-
vbsにてショートカットが存在す...
-
コマンドプロンプトで作成日時...
-
VBSが起動しない
-
Latexで図番号だけを「図1.1」...
-
エクセル2010VBA
-
VB6 でSSH接続がしたい
-
私のコンピューター上のファイ...
-
Batファイルをバイナリ形式にす...
-
ADODB.Streamで開いたファイル...
-
ラッパーって何なんでしょう・...
-
Matlab/ @の意味
-
COBOL
-
エクセルのヘルプファイルって...
-
VB.NET ファイルの種別取得方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
binファイルを解凍したいの...
-
アクセス 壊れた? 「ファイ...
-
コマンドプロンプトで作成日時...
-
#include <Windows.h>というヘ...
-
Latexで図番号だけを「図1.1」...
-
リンクの張り付けかたを教えて...
-
.NETアプリを作ったときの .man...
-
jarファイル
-
コマンドプロンプトで、指定し...
-
「営業秘密の漏洩」について
-
自分で作成した重要ファイルを...
-
warファイルをEclipseでプロジ...
-
公文書のxmlファイルの開き方が...
-
ストレージにある全てのファイ...
-
C言語---ファイルに出力したデ...
-
HTMLからのBATファイル実行
-
ファイルが開かれているかどう...
-
監視ツールを入れさせられまし...
-
「ブルーファイル」と「グリー...
-
バッチ処理で追記コピーしたい
おすすめ情報