2010-03-20 150 views
2

我正在写一个makefile,我无法弄清楚如何包含我所有的源文件,而不必编写所有我想使用的源文件。这里是我正在使用的makefile:MakeFiles和依赖关系

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 [email protected] 

.cpp.o: 
    $(GCC) -c $< -o [email protected] 

如何自动添加新的源文件,而无需将其添加到源代码行?

+1

玩具项目之外,你不想经常这样做。第一次制作文件的备份副本时,您会遇到麻烦,或者留下一些测试代码。没有完全列出组成该程序的模块是一个麻烦的秘诀。如果每个文件都是一个完整的独立程序,这正是德克所建议的,那么它就更为合理。 – 2010-03-20 17:40:19

回答

1

这里是我已经在每个文件映射一个-to-one的可执行文件的目录examples/使用:

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

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


all :  $(programs) 

这也足以为make知道如何把一个.cpp文件到一个目标文件,然后到一个可执行文件。请注意,这是在Linux上,所以对于Windoze你可能需要做

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

要追加.exe。

+0

OP只需要一个可执行文件。 (虽然他可以从你的答案中找出其他答案) – rjh 2010-03-20 17:09:43

+0

正确。他所需要的只是来源声明。 – 2010-03-20 19:26:05