编写Makefile 来管理文件的编译过程,使用make来编译生成可执行文件,要求编译和链接分阶段完成
时间: 2024-01-24 09:02:57 浏览: 156
好的,以下是一个Makefile的示例,其中包含了编译和链接分阶段完成的过程:
```makefile
CC=g++ # 指定编译器
CFLAGS=-c -Wall # 指定编译选项
LFLAGS=-Wall # 指定链接选项
# 定义源文件和目标文件
SOURCES=main.cpp func1.cpp func2.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=myprogram
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LFLAGS) $(OBJECTS) -o $@
.cpp.o:
$(CC) $(CFLAGS) $< -o $@
clean:
rm -rf $(OBJECTS) $(EXECUTABLE)
```
在这个Makefile中,`$(SOURCES)`表示源文件列表,`$(OBJECTS)`表示目标文件列表,`$(EXECUTABLE)`表示最终生成的可执行文件名。`all`是默认的构建目标,执行`make`命令时会自动执行该目标。`$(SOURCES)`和`$(EXECUTABLE)`被作为依赖项,在执行`all`目标前会检查它们是否存在或更新,如果是则会执行接下来的指令。
`$(EXECUTABLE)`依赖于`$(OBJECTS)`,在执行该目标时会把目标文件链接为可执行文件。`$(OBJECTS)`的生成依赖于对应的源文件`.cpp`,当源文件被更新时,会重新编译对应的目标文件。
最后,`clean`目标用于删除编译生成的`.o`文件和可执行文件。执行`make clean`即可删除这些文件。
使用该Makefile,只需执行`make`命令即可编译生成可执行文件。在代码更新后,再次执行`make`即可重新编译生成更新后的可执行文件。
阅读全文