创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡><)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
c++系列专栏:C/C++零基础到精通给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ
c语言内容:
专栏:c语言之路重点知识整合
【c语言】全部知识点总结
Makefile文件是Linux中用于编译和链接的自动化工具,是GNU工具
(vi、gdb、makefile)的一部分。
程序的生成过程分为:编译期(源文件.c
编译生成.o
文件)和链接期(把所有.o
文件链接生成可执行文件)。如果程序更新,下次生成可执行文件会对所有文件再次执行这个生成过程。因此需要Makefile文件,在修改源文件后,只编译修改后的文件,节省编译时间。
程序第一次编译时,会保存所有生成的中间文件.o文件
,下次编译时只编译修改的源文件,重新生成.o
文件,没有修改的.o
文件无需再次编译,直接使用保存过的.o
文件,一起链接生成可执行文件。
Makefile在编译期简化编译
通过比较源文件的修改时间和对应的.o
文件的生成时间,如果修改时间更新,说明源文件被修改,需要重新编译。
命名:必须以makefile或Makefile命名
注释:#
执行Makefile文件:make
编写makefile文件的格式:
目标:依赖
命令
命令前面是一个Tab键
没有数据类型,默认为字符串类型
变量名可以由字母、数字、下划线构成,不能以数字开头
为了与高级语言区分,一般使用全大写定义变量
使用变量:
$(变量名)
$@
:表示目标名$^
:表示所有依赖项$<
:表示第一个依赖项#1.存储目标名
TARGET=myapp
#2.存储编译期版本
CC=gcc
#3.存储头文件路径
INCLUDE_PATH=../include
#4.存储库文件路径
LIBRARY_PATH=../lib
#5.存储安装路径
INSTALL_PATH=/user/bin
#6.存储编译选项
CFLAGS=-I$(INCLUDE_PATH) -c -Wall
#7.预处理选项
CPPFLAGS=-D
文件名处理函数:获取某个路径下的所有文件名
例如:获取当前路径下所有的.c文件名,存储到变量SOURSEFILE中
SOURSEFILE=$(wildcard *.c)
字符串替换函数:在指定的文本中查找符合模式的字符串进行替换
例如:把变量SOURSEFILE中的所有.c文件改为.o文件
DFILE=$(patsubst %.c,%.o,$(SOURSEFILE))
将.c文件编译成.o文件(头文件依赖在上层include文件夹中):
%.o:%.c
gcc -c $< -I../include
功能目标没有依赖,只有命令
1.删除
clean:
rm -rf $(DFILE) $(TARGET)
2.安装
install:
sudo cp $(TARGET) $(INSTALL_PATH)
3.卸载
uninstall:
sudo rm -rf $(INSTALL_PATH)/$(TARGET)
卸载时如果不小心多了空格,将会删除整个文件夹!可以先进行输出确认后再删除
4.输出
output:
echo $(INSTALL_PATH)/$(TARGET)
大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。 |
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●) |