- 締切済み
C言語のmakefileについて
C言語のmakefileについて質問です。 例えば下記makefileでは、“CC”というマクロを“gcc”という文字列で再定義しています。 しかし中には(1)『CC = gcc』という定義なしでいきなり(2)『$(CC) -o hello $(objs)』 でコンパイルしているmakefileを見るのですが、その場合(2)は何でコンパイルされているのでしょうか。($(CC)の中身はCC??GCC?ACC??) ※下記ターゲット名等はサンプルです。 ------------------ # Makefile objs = hello.o edajima.o CC = gcc hello: $(objs) $(CC) -o hello $(objs) .PHONY: clean clean: $(RM) hello $(objs)
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
「make が『標準的』と思っている C コンパイラ」というのが正確かな. Unix系なら cc だけど VisualStudio なら cl. もちろん他のコンパイラに付属する make なら「そのコンパイラ」でしょう.
- rinkun
- ベストアンサー率44% (706/1571)
何もないと暗黙ではCC=ccですかね。 環境変数でCCが定義されているか、環境変数MAKEFILESで事前読み込みmakefileが定義されていると、その限りではないでしょう。 下記に詳しいですね。 # http://www.ecoop.net/coop/translated/GNUMake3.77/make_10.jp.html#SEC92
お礼
ありがとうございます。非常によくわかりました。
- entree
- ベストアンサー率55% (405/735)
CCなどを記述しなくてもmakeできるように、makeコマンドにデフォルト値が ハードコードされているだけです。 例えば、GNU makeの場合、default.cに記述があります。 ただ、デフォルトはバージョンアップの際に変更される可能性もあるでしょうし、 環境依存なこともあるでしょうから、明示的に指定することが望ましいでしょう。
お礼
ありがとうございます。非常によくわかりました。