Используя в качестве примера make-файл:
CC=g++
CFLAGS=-c -Wall
LDFLAGS=-lfoobar
SOURCES=main.cpp foo.cpp bar.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello</p>
<p>all: $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o $@</p>
<p>$(OBJECTS):
$(CC) $(CFLAGS) $< -o $@
$ <всегда расширяется до нуля. </p>
Я пытался изменить его на следующее:
CC=g++
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp foo.cpp bar.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello</p>
<p>all: $(OBJECTS) # or main.o foo.o bar.cpp
$(CC) $(LDFLAGS) $(OBJECTS) -o $@</p>
<p>.cpp.o:
$(CC) $(CFLAGS) $< -o $@
Это говорит мне, что для main.o
нет никаких правил.
Я что-то здесь упускаю? Я вижу много файлов make, использующих эти синтаксисы и / или переменные и зависимости.