1. ホーム
  2. makefile

[解決済み] makefile の記号 $@ と $< はどういう意味ですか?

2022-03-18 10:22:03

質問

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 $@

は何をするのでしょうか? $@$< は正確に行うのですか?

どのように解決するのですか?

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

例えば、次のような宣言を考えてみましょう。

all: library.cpp main.cpp

この場合

  • $@ は、次のように評価されます。 all
  • $< は、次のように評価されます。 library.cpp
  • $^ は、次のように評価されます。 library.cpp main.cpp