メイクファイルのシンボル $@ と $< は何を意味しますか? 質問する

メイクファイルのシンボル $@ と $< は何を意味しますか? 質問する
CC=g++
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp hello.cpp factorial.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
    $(CC) $(LDFLAGS) $(OBJECTS) -o $@

.cpp.o:
    $(CC) $(CFLAGS) $< -o $@

$@とは具体的に何を$<するのでしょうか?

ベストアンサー1

$@は生成されるターゲットの名前であり、$<最初の前提条件(通常はソースファイル)です。これらのすべての特殊変数のリストは、GNU Make マニュアル

たとえば、次の宣言を考えてみましょう。

all: library.cpp main.cpp

この場合:

  • $@次のように評価されるall
  • $<次のように評価されるlibrary.cpp
  • $^次のように評価されるlibrary.cpp main.cpp

おすすめ記事