
下記の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で質問しましょう!
似たような質問が見つかりました
- 日本語 必要とする場合 5 2023/08/14 18:56
- 格安スマホ・SIMフリースマホ SMS認証用の電話番号が欲しい 6 2022/06/12 18:21
- その他(AV機器・カメラ) ピアノ演奏の録画録音 3 2022/10/28 14:01
- Java Java モンスターブリーダー 1 2023/02/05 09:44
- Excel(エクセル) 【!】Excel 2つの条件付き書式が反映されません。。 5 2023/07/14 16:47
- その他(ビジネス・キャリア) ビジネスメールの書き方についての質問ですが、メールの書き出し部分で、Toの方を上の行に書き、CCの方 3 2022/04/05 16:27
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- その他(宿泊・観光) 栃木県民割 ブロック割の必要書類について 3 2022/09/11 18:30
- 宅地建物取引主任者(宅建) 35条 重要事項説明書につきまして。 宅建の勉強をしております。 上記について区分所有建物のみ必要な 3 2023/08/24 09:14
- 相続・遺言 遺言執行に法定相続人の戸籍謄本が必要と聞きましたが・・ 5 2023/02/20 12:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
隠しファイルの扱い
-
アクセス 壊れた? 「ファイ...
-
binファイルを解凍したいの...
-
reaper音声ファイルについて
-
jarファイル
-
Latexで図番号だけを「図1.1」...
-
#include <Windows.h>というヘ...
-
ファイルの変換について
-
.NETアプリを作ったときの .man...
-
vbsにてショートカットが存在す...
-
ファイル名を指定しないVBAは?
-
オートラン(autorun.inf)につ...
-
fstatでファイルがリンクかどう...
-
JRのjsonファイルって使って大...
-
OpenCvSharpでの動画の書き出し...
-
既にファイルが開いているのな...
-
Word VBA MSGBOX 内で降順表示
-
HTMLファイルにMPEGファイルを...
-
公文書のxmlファイルの開き方が...
-
【VBA】EXCELブックを開かずに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
binファイルを解凍したいの...
-
アクセス 壊れた? 「ファイ...
-
コマンドプロンプトで作成日時...
-
.NETアプリを作ったときの .man...
-
リンクの張り付けかたを教えて...
-
#include <Windows.h>というヘ...
-
Latexで図番号だけを「図1.1」...
-
jarファイル
-
「ブルーファイル」と「グリー...
-
ファイルが開かれているかどう...
-
バッチ処理で追記コピーしたい
-
VBAのバイナリ出力について
-
公文書のxmlファイルの開き方が...
-
コマンドプロンプトで、指定し...
-
監視ツールを入れさせられまし...
-
自分で作成した重要ファイルを...
-
HTMLからのBATファイル実行
-
VBSが起動しない
-
他のMDBのマクロを実行する方法
-
Batファイルをバイナリ形式にす...
おすすめ情報