快速编写一个简洁、正确的makefile
makefile教程
当我们在 linux 系统下进行 C/C++ 编程,或者要拿着我们 windows 系统下的 VS 编译器中编写的 C/C++ 源码在 linux 系统中运行时,我们就会涉及到 makefile 文件。
makefile 文件用于 linux 系统中将编写好的 .c ,.cpp,.h 文件编辑成一个可执行文件,类似 VS 中的 “生成解决方案” 的过程。拥有独立的编写语言和方法。当然,也可以通过shell命令行编译,但当文件较多时,采用命令行去编译费时费力,并且当项目中代码发生变化时,不利于后期的更新和维护。
一个正确可行的makefile文件也具有多种,本次我们介绍一种书写较为简洁、上手较为容易的编写方式,如果要详细学习的话,makefile文件有很多可以学习研究的地方。
1 准备
采用 cd 命令将当前工作目录设置为代码文件所在路径,采用 vim makefile 命令打开文件(如果没有会自动创建)
2 编写
2.1 定义参数(主要为了简洁,便于更新、维护)
CXX = g++ (gcc) # .cpp 文件用 g++ 编译,.c 文件用 gcc 编译
TARGET = ..... # 输入所生成可执行文件的名字,类似于 win 中的 ....exe
OBJ = main.o ..... # 输入包含 main 在内的所有 .cpp,但后缀改为 .o,中间空格隔开即可
CXXFLAGS = -c # 编译选项,如果想看警告信息,在后面添加 -Wall,空格隔开
2.2 编译
$(TARGRT) : $(OBJ)
制表符$(CXX) -o $@ $^ # 表示用 g++ 编译器,将 OBJ 里的所有 .o 生成可执行程序
%.o : %.cpp
制表符$(CXX) $(CXXFLAGS) $^ -o $@ # 表示用 g++ 编译器,将所有 .cpp 文件编译生成 .o 文件
.PHONY:clean
clean:
制表符rm -f *.o $(TARGET) #删除编译生成的所有 .o 文件和可执行程序
2.3 使用
makefile 编写结束后,在 shell 命令行输入 make 进行编译,如果文件名不是makefile,输入 make -f 文件名 进行编译,输入 make clean 删除生成的文件。
2.4 运行
在 shell 命令行输入 ./可执行程序名 就可以成功运行程序了。

