前言:
Makefile 是一个用于自动编译和链接程序的工具,在我们进行项目开发的过程中可以简化编译过程,提高开发效率。接下来我将介绍 Makefile 的基本概念、语法规则以及如何编写一个简单的 Makefile。
1.Makefile基本使用语法:
Makefile 的基本语法包括以下几个部分:
1.目标:目标是作为一个文件名,表示你需要生成/运行的是哪个文件。
2.依赖:依赖是目标文件所依赖的其他文件(类似于库),通常是一个或者多个源文件库。
3.命令:用于生成目标文件的shell命令。
2.Makefile示例:
假设我们有一个简单的 C++ 程序,包含两个源文件 main.cpp 和test.cpp,我们需要编写一个 Makefile 来自动编译这个程序。(对于自己编写的话,基本框架不会改变。如下,内容就根据实际需要运行的名称修改就好。)
首先,创建一个名为 Makefile 的文件,然后在文件中添加以下内容:
注意:这里有个非常重要的地方是,我们可以看见在链接,编译命令的代码前都有空格,这里一定要是使用TAB键去留空,切勿打空格。
接下来,解释下这段代码,方便理解:
1.定义编译器:使用CC变量来存储编译器名称。
2.编译选项:使用CFLAGS变量存储编译选项。
3.目标文件:使用TARGET变量存储目标文件名称。
4.依赖关系:main目标依赖于main.o和test.o
5.链接命令:用于将这两个.o文件链接成可执行文件
6.编译命令:编译.cpp文件
7.清理命令:删除生成的目标文件和中间文件。
这里的1,3 ,4是一个Makefile文件的基础。
# 定义编译器
CC = g++
# 编译选项
CFLAGS = -Wall -g
# 目标文件
TARGET = main
# 依赖关系
$(TARGET): main.o test.o
# 链接命令
$(CC) $(CFLAGS) -o $(TARGET) main.o test.o
# 编译命令
main.o: main.cpp
$(CC) $(CFLAGS) -c main.cpp
factorial.o: factorial.cpp
$(CC) $(CFLAGS) -c test.cpp
# 清理命令
clean:
rm -f *.o $(TARGET)
3.Makefile使用方法:
在终端中,进入Makefile文件所在目录然后直接输入以下指令,来自动编译并且生成链接程序和可执行main文件(这种方法简单,但对于多线程的使用可能容易出现问题。所以还是建议自己去创建编写Makefile文件)
make