電子書籍の厳選無料作品が豊富!

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)

A 回答 (3件)

「make が『標準的』と思っている C コンパイラ」というのが正確かな. Unix系なら cc だけど VisualStudio

なら cl. もちろん他のコンパイラに付属する make なら「そのコンパイラ」でしょう.
    • good
    • 0
この回答へのお礼

ありがとうございます。非常によくわかりました。

お礼日時:2011/05/09 11:46

何もないと暗黙ではCC=ccですかね。


環境変数でCCが定義されているか、環境変数MAKEFILESで事前読み込みmakefileが定義されていると、その限りではないでしょう。

下記に詳しいですね。
# http://www.ecoop.net/coop/translated/GNUMake3.77 …
    • good
    • 0
この回答へのお礼

ありがとうございます。非常によくわかりました。

お礼日時:2011/05/09 11:46

CCなどを記述しなくてもmakeできるように、makeコマンドにデフォルト値が


ハードコードされているだけです。

例えば、GNU makeの場合、default.cに記述があります。

ただ、デフォルトはバージョンアップの際に変更される可能性もあるでしょうし、
環境依存なこともあるでしょうから、明示的に指定することが望ましいでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!