Makefile 生成文件和依赖项

Makefile 生成文件和依赖项,makefile,Makefile,我正在写一个makefile,我不知道如何包含所有的源文件,而不必写所有我想使用的源文件。以下是我当前使用的makefile: GCC = $(GNUARM_HOME)\bin\arm-elf-gcc.exe SOURCES=ShapeApp.cpp Square.cpp Circle.cpp Shape.cpp OBJECTS=$(SOURCES:.cpp=.o) EXECUTABLE=hello all: $(EXECUTABLE) $(EXECUTABLE): $(OBJECTS)

我正在写一个makefile,我不知道如何包含所有的源文件,而不必写所有我想使用的源文件。以下是我当前使用的makefile:

GCC = $(GNUARM_HOME)\bin\arm-elf-gcc.exe
SOURCES=ShapeApp.cpp Square.cpp Circle.cpp Shape.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello

all: $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS) 
#$(CC) $(LDFLAGS) $(OBJECTS) -o $@

.cpp.o:
    $(GCC) -c $< -o $@
GCC=$(GNUARM\u HOME)\bin\arm-elf-GCC.exe
源=shapepp.cpp Square.cpp Circle.cpp Shape.cpp
对象=$(源:.cpp=.o)
可执行文件=你好
全部:$(可执行)
$(可执行文件):$(对象)
#$(CC)$(LDFLAGS)$(对象)-o$@
.cpp.o:
$(GCC)-c$<-o$@

如何自动添加新的源文件而不必将其添加到源代码行?

以下是我在
示例/
目录中使用的内容,其中每个文件都一一映射到一个可执行文件:

sources :=   $(wildcard *.cpp)
programs :=  $(sources:.cpp=)

[ more settings about compiler flags, linker options, ...]


all :        $(programs)
这就足够了,因为
make
知道如何将.cpp文件转换为对象文件,然后再转换为可执行文件。请注意,这是在Linux上进行的,因此对于Windoze,您可能需要这样做

programs :=     $(sources:.cpp=.exe)

要附加.exe。

OP只需要一个可执行文件。(尽管他可能从你的答案中找出其余的答案)正确。他需要的只是来源声明。除了玩具项目,你不想经常这样做。第一次备份文件或留下一点测试代码时,就会遇到麻烦。没有准确列出组成程序的模块会带来麻烦。如果每个文件都是一个完整的自包含程序(这是德克建议的),那么它就更合理。