如何制作一个简单的 C Makefile
问题:
我们需要创建一个 Makefile 来管理我们的 C 项目,但我们还没有被教导如何这样做。该项目由一个文件 a3driver.cpp 组成,该文件从 /user/cse232/Examples/example32.sequence.cpp 导入一个类。
解决方案:
1.基本 Makefile:
a3a.exe: a3driver.cpp example32.sequence.cpp g++ -g -o a3a.exe a3driver.cpp example32.sequence.cpp
此 Makefile 声明可执行文件 a3a.exe 依赖于源文件 a3driver.cpp 和 example32.sequence.cpp。执行时会执行命令将程序编译成可执行文件。
2.使用内置规则:
CC=g++ CPPFLAGS=-g a3a.exe: a3driver.o example32.sequence.o $(CC) $(LDFLAGS) -o a3a.exe a3driver.o example32.sequence.o a3driver.o: a3driver.cpp $(CC) $(CPPFLAGS) -c a3driver.cpp example32.sequence.o: example32.sequence.cpp $(CC) $(CPPFLAGS) -c example32.sequence.cpp
此 Makefile 使用内置规则来简化编译命令。它将 CC 变量定义为 C 编译器,并将 CPPFLAGS 变量定义为具有公共编译标志。依赖项仍然是显式定义的,但编译命令是自动生成的。
3.使用自动生成的依赖项:
CC=g++ CPPFLAGS=-g a3a.exe: a3driver.o example32.sequence.o $(CC) $(LDFLAGS) -o a3a.exe a3driver.o example32.sequence.o depend: .depend .depend: $(SRCS) $(CC) $(CPPFLAGS) -MM $^ > .depend; .PHONY: clean clean: rm -f a3driver.o example32.sequence.o .depend include .depend
此 Makefile 使用内置 -MM 标志自动生成依赖项。 dependent 目标执行生成带有依赖项的文件 .depend 的命令。 .PHONY: clean 目标是一个特殊目标,实际上不是文件或规则。 clean 目标会删除目标文件和 .depend 文件。
以上是如何为单文件项目创建简单的 C Makefile?的详细内容。更多信息请关注PHP中文网其他相关文章!