【发布时间】:2011-12-18 20:33:41
【问题描述】:
以下面的makefile为例:
CC=g++
CFLAGS=-c -Wall
LDFLAGS=-lfoobar
SOURCES=main.cpp foo.cpp bar.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello
全部:$(对象) $(CC) $(LDFLAGS) $(OBJECTS) -o $@
$(对象): $(CC) $(CFLAGS) $
$
我已尝试将其更改为以下内容:
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 $@
.cpp.o: $(CC) $(CFLAGS) $
这告诉我 main.o 没有规则
我在这里遗漏了什么吗?我看到很多使用这些语法和/或变量和依赖项的 make 文件。
【问题讨论】:
-
$<代表$(OBJECTS)的先决条件列表,您没有给出任何条件。只需使用 trojanfoe 建议的内置规则即可。 -
第二次尝试的语法似乎是正确的。你检查过 make -rd 的输出并确定 main.cpp 存在吗?