Makefile不会扩展依赖项

时间:2011-10-31 15:48:23

标签: c++ linux makefile

使用以下作为示例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 $@

$(OBJECTS): $(CC) $(CFLAGS) $< -o $@

$&LT;总是膨胀到无。

我尝试将其更改为以下内容:

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

这告诉我main.o

没有规则

我在这里遗漏了什么吗?我看到很多make文件使用这些语法和/或变量和依赖项。

1 个答案:

答案 0 :(得分:2)

试试这个:

CXX=g++
CXXFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp foo.cpp bar.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello

all: $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)  # or main.o foo.o bar.cpp
    $(CXX) -o $@ $(LDFLAGS) $(OBJECTS) $(LIBS)

无论如何,构建每个目标文件的规则都是内置的,因此无需定义它。