使用下面作为一个例子生成文件:Makefile文件不会扩大依赖性
CC=g++
CFLAGS=-c -Wall
LDFLAGS=-lfoobar
SOURCES=main.cpp foo.cpp bar.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello
all: $(OBJECTS) $(CC) $(LDFLAGS) $(OBJECTS) -o [email protected]
$(OBJECTS): $(CC) $(CFLAGS) $< -o [email protected]
$ <总是什么也不扩展。
我试图将其更改为以下:
CC=g++
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp foo.cpp bar.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello
all: $(OBJECTS) # or main.o foo.o bar.cpp $(CC) $(LDFLAGS) $(OBJECTS) -o [email protected]
.cpp.o: $(CC) $(CFLAGS) $< -o [email protected]
这告诉我,有一个为main.o
我在这里失去了一些东西没有什么规则?我看到很多使用这些语法和/或变量和依赖关系的make文件。
'$ <'代表'$(OBJECTS)'的先决条件列表,你没有给出任何。只需使用像trojanfoe建议的内置规则。 –
第二次尝试的语法看起来不错。你检查了make -rd的输出并确保main.cpp存在吗? – thiton