记录Makefile的第一次学习

1.Makefile的功能和原理

Makefile是一种用于自动化构建和管理软件项目的工具,由make命令执行。Makefile文件描述了整个工程所有文件的编译顺序、编译规则,Makefile有自己的书写格式、关键字、函数。

Makefile的产生原因是为了解决编译过程中的依赖关系问题,使得在开发过程中能够轻松地进行代码的编译、链接和部署。在链接过程中,如果我们链接的目标文件过多,那么挨个指出目标文件名称,就很不方便,所以,使用makefile可以批量,流程的指出连接

2.Linux平台的Makefile用法

在Linux开发中,Makefile文件给我们带来很多的便利。在Linux系统下并不会像Windows那么多开发工具,工程源文件的编写往往是使用一个简单的编辑器(VIM),然后通过Makefile文件进行自动化编译。

make命令是读取当前目录下的文件名为makefile的文件,然后按照makefile的文件内容将其项目一次性编译。

当我们输入make命令的时候,make命令会在当前目录下找寻名字是Makefile或者makefile的文件。

也可以使用-f参数指定目标文件。

make -f Makefile.typename

3.Windows平台的Makefile用法

在Windows平台可以使用Makefile批量链接编译和gcc,g++等编译器的帮助下,不需要下载vs等工具进行编程。

1)安装对应语言的编译器

以c语言为例,gcc编译器下载,TDM-GCC,打开根据自己电脑的类型选择合适的程序,

gcc的安装与下载可以找教程。注意安装路径不要有中文

2)检查编译器安装和环境变量是否成功设置

cmd窗口输入gcc -v

输入mingw32-make -v

4.Makefile的基本语法

1)基本格式

目标文件:依赖文件

 【tab】命令

命令都需要以tab开始,且不能用四个空格替代。

hello:hello.o
	g++ hello.o -o hello

hello.o:hello.S
	g++ -c hello.S -o hello.o
	
hello.S:hello.i
	g++ -S hello.i -o hello.S
	
hello.i:hello.cpp
	g++ -E hello.cpp -o hello.i

2)赋值

=     替换

+=   追加

:=    恒等于

3)通配符

%.o       任意以.o结尾的文件

*.o        所有以.o结尾的文件

4)特殊

$^        所有依赖文件

$@        所有目标文件

$<        所有依赖文件的第一个文件

5).PHONY次目标(附加处理)

固定以.PHONY:开头

clear为自己取的功能名称。

大部分基于shell的语法,用于cmd时需要按照cmd内置的功能进行修改。

.PHONY:
clear:
	del hello.o hello.S hello.i

6)windows:将文件保存为Makefile,无后缀

进入文件存放位置,注意将需要的依赖文件放在一起

文件路径一栏处输入cmd,进入cmd

输入mingw32_make 即可。

6)参考资料

最实用的Makefile教程 真的很简单(搞不明白网上的教程写那么复杂干嘛)-CSDN博客

ps:一些注意事项

1.注意编写语言与编译器名称对应。

仅供本人学习使用,绝无抄袭之意。