首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Makefile】简单Makefile编写

(任意Shell命令) 这是一个文件依赖关系,也就是说,target这一个或多个目标文件依赖于prerequisites文件,其生成规则定义要在command。...这就是Makefile规则,也就是Makefile中最核心内容。...如果找到,它会找文件第一个目标文件(target),例如上面示例test_demo,并把这个文件作为最终目标文件。...---- Make变量 一个Makefile我们发现经常会有重复内容,例如上面示例: test01.o test02.o main.o 如果我们需要再加入一个新.o文件,那么好几个地方都需要修改...所以,为了makefile易维护,在makefile我们可以使用变量。makefile变量也就是一个字符串。可以理解为C语言中宏。

96710
您找到你想要的搜索结果了吗?
是的
没有找到

Makefile:=, =, ?=和+=含义

Makefile语法,时不时会见到各种“=”号赋值语句,除了常见“=”和“:=”,还有“?=”等 那么这些赋值等号分别表示什么含义呢?...“=” “=”是最普通等号,然而在Makefile确实最容易搞错赋值等号,使用”=”进行赋值,变量值是整个makefile中最后被指定值。...在make时,会把整个makefile展开,拉通决定变量值 “:=” 相比于前面“最普通””=”,”:=”就容易理解多了。”:=”就表示直接赋值,赋予当前位置值。...因此相比于”=”,”:=”才是真正意义上直接赋值。 “?=” “?=”表示如果该变量没有被赋值,则赋予等号后值。举例: VIR ?...= new_value 这种情况下,VIR值就是old_value “+=” “+=”和平时写代码理解是一样,表示等号后面的值添加到前面的变量上

1.1K20

LinuxMakefile文件详解

TARGET: 目标文件变量,这里定义了最终生成可执行文件名字。 SRCS: 源文件变量,这里列出了所有的源文件。 OBJS: 中间文件变量,这里源文件后缀由 .c 替换为 .o。...%.o: %.c: 通用规则,告诉 Make 如何 .c 文件编译成对应 .o 文件。 clean: 清理规则,执行 make clean 时删除生成可执行文件和中间目标文件。 3....这样可以 Makefile 分成多个模块,提高可维护性。...条件语句 Makefile 可以使用条件语句,根据不同条件执行不同指令。...注意到这个 Makefile 变量和规则可以根据项目的结构和需求进行适当调整。 23. 安装规则 Makefile 可以包含安装规则,用于将可执行文件、库文件等安装到指定位置。

80110

Makefile伪目标

1、Makefile伪目标的格式: .PHONY : clean clean:     rm xxxx 2、Makefile伪目标的作用: 第一种情况: 如果我们需要书写这样一个规则:规则所定义命令不是去创建目标文件...当文件夹没有clean这个文件时候,我们输入“make clean”能按照初衷执行,但是一旦文件夹中出现clean文件,我们再次输入“make clean”,由于这个规则没有任何依赖文件,所以目标被认为是最新而不去执行规则所定义命令...为了解决问题,我们目标clean定义成伪目标。...直接执行rm动作; 第二种情况: 伪目标的另一种使用场合时在make并行和递归执行过程。...subdirs: $(SUBDIRS) $(SUBDIRS): $(MAKE) –C $@ 其中subdirs模板表示要编译多个子目录工程

1.3K70

MakefileShell脚本简介

给很多刚接触Makefile的人: 1、Makefile可以嵌入shell脚本,而且能像shell脚本中一样,各种命令、控制结构都可使用。 2、Makefile主要结构是 ......3、Makefileshell,不同行在不同进程执行,不同行直接不能传递变量,所以很多时候shell都尽量使用反斜杠()来把相关内容串成一行。...4、Makefile变量和shell变量是两个不同东西,并且为了避免Makefile变量和shell变量冲突,引用Makefile变量最好使用$(Makefile_Var),引用shell变量时最好使用...5、Makefile多字符变量只能使用$(VAR)或${VAR}来引用,不能使用$VAR,$VAR会被解释成$(V)AR....但如果在纯粹shell编程,纯shell脚本里可以使用$VAR来引用VAR这个变量。 收藏于 2012-08-08

2K80

Makefile实战例子

前面我们对Makefile知识点进行描述,现在给出一个例子,来看看如何使用,顺便结束Makefile这个话题。 我们准备文件目录和文件内容。...└── sub.c 其中Makefile内容,如下: VERSION = 1.0.0 SOURCE = $(wildcard ....行3:./src目录下.c结尾文件,替换成.o文件,并赋值给OBJECT。 行4:通过-I选项指明头文件目录,并赋值给变量INCLUDES。...行7:最终目标文件名字rice,赋值给TARGET。 行8:替换CC默认之cc,改为gcc。 行9: 显示所有的警告信息选项和gdb调试选项赋值给变量CFLAGS。...行13:可执行程序100ask,并将可执行程序生成到output目录,生成可执行文件后缀添加版本号。 行16:源文件生成对应目标文件。 行18:伪目标,避免当前目录有同名clean文件。

47330

Linux — Makefile学习笔记以及多级目录下Makefile编写

零、简单说明(2020.3.9追加) 1、由于Makefile对于制表符(tab)、还有unix和windows对于换行符不同等等原因,本文中所有的Makefile文件内容不建议您直接复制然后粘贴使用...Makefile文件文件内容来执行大量编译工作,Make只编译改动代码文件,而不用完全编译。...如果未使用这个选项,标准版make命令优先在当前命令下查找名称为makefile文件,如果不存在名称makefile文件,则开始查找名为Makefile文件。...三、Makefile宏 可以通过KEY=value在makefile定义宏。...^_^): 在项目文件家下新建文件夹,比如例子,可以新建四个文件夹,分别是: Main add sub obj main.c移动到main文件夹,并且新建makefile,输入内容: $(OBJDIR

5.1K10

gdb和makefile讲解

-g test编译后debug版本命名为test-debug 然后你就可以看到一个debug文件,你就用gdb 对他进行调试即可: 下图对第五行进行打一个断点 2 gdb使用 2.1...list 打印行号 list 所有内容和行号一起打印 2.2 run运行程序 r(run) 运行程序 遇到断点停止 2.3 执行语句 n 或 next:单条执行 对应vs里f10 s或...makefile,从一个侧面说明了一个人是否具备完成大型工程能力 一个工程源文件不计数,其按类型、功能、模块分别放在若干个目录makefile定义了一系列规则来指定,哪些文件需要先编译,哪些文件需要后编译...在默认方式下,也就是我们只输入make命令: 1. make会在当前目录下找名字叫“Makefile”或“makefile文件。 2....如果找到,它会找文件第一个目标文件(target),在上面的例子,他会找到“test3”这个文件, 并把这个文件作为最终目标文件。 3.

8710

可移植 Makefile 教程

只有一个意外:在 Makefile ,第一个非特殊目标会被认为是 默认目标(default target)。当调用 make 但是没有并没有指定一个目标时,这个默认目标就会被自动选择。...我会用 game 作为新 all 目标的一个先决条件。更多实际目标,可以作为必要条件加入到默认目标。这个 Makefile 使用者也可以使用 make all 来构建整个项目。...第二个 .SUFFIXES .c 和 .o 加到现在是空后缀列表。...最好是在一次性完成,在 Makefile 写好依赖,以便于 make 能够如期工作。如果依赖改变了,那么重新构建你 Makefile....install 安装已编译好程序,主要任务是完成目标执行文件拷贝 print 列出改变过源文件 tar 打包备份源程序,形成tar文件 dist 创建压缩文件,一般tar文件压缩成Z文件或gz

1.3K10

makefile伪目标的理解

我们知道Makefile语法是这样: target ... : prerequisites ... command … … 2....Test: a.o b.o   gcc -o Test a.o b.oclean:  rm *.o 我们可以单独这么运行: make a.o 或者 make b.o 或者 make clean 注意上面三个区别...前两个都会生成目标,而第三个不会生成目标,仅仅希望执行所在规则(clean)定义命令(rm)。 这个时候就需要伪目标出马了:目的不是为了生成目标,仅仅是希望执行其所在规则定义后面的命令。 3....为什么要使用伪目标: 1)避免在我们Makefile定义只执行命令目标和工作目录下实际文件名字出现冲突。...(比如,假如当前目录有一个clean文件,那么上面的 make clean 就不能达到我们预期了) 2)提高执行效率,被声明为伪目标后,make在执行此规则时不会视图去查找隐含规则来创建这个目标。

1.5K80

多文件目录Makefile写法

多文件目录Makefile写法 1、前言   linux下程序开发,涉及到多个文件,多个目录,这时候编译文件任务量比较大,需要写Makefile 2、简单测试   测试程序在同一个文件,共有func.h...也就是说通常将文件按照文件类型放在不同目录当中,这个时候Makefile需要统一管理这些文件,生产目标文件放在目标目录下,可执行文件放到可执行目录下。测试程序如下图所示: ?... 符号 @, ^, < 意思:  ^ 表示所有的依赖文件  < 表示第一个依赖文件   (2)wildcard、notdir、patsubst意思:   wildcard : 扩展通配符   ...  -L /home/hello/lib表示/home/hello/lib目录作为第一个寻找库文件目录,    寻找顺序是:/home/hello/lib-->/lib-->/usr/lib--...>/usr/local/lib -lworld表示在上面的lib路径寻找libworld.so动态库文件(如果gcc编译选项中加入了“-static”表示寻找libworld.a静态库文件

3.7K20

Makefile详细介绍和使用

makefile详细介绍和使用 Makefile定义规则 参考链接1:https://seisman.github.io/how-to-write-makefile/invoke.html 参考链接2:...https://www.cnblogs.com/LittleHann/p/3855905.html 规则是makefile中最重要概念,其告诉make 目标文件依赖关系,以及如何生成及更新这些目标文件...在makefile文件规则有2种,一种是显式规则,另一种是隐式规则。...:为要生成或更新目标 prerequisites:为目标依赖关系 recipe:为生成目标的命令, foo.o : foo.c defs.h cc -c -g foo.c 其中foo.o为target...上面的代码在linux命令窗口下输入make命令就可以执行了,最终会生成一个test可执行文件。如果需要清除生成中间.o文件,输入make clean就可以全部清除了。

58140
领券