title: Makefile文件 文章目录 title: Makefile文件 Makefile文件 Makefile文件 make命令执行时,需要一个makefile文件,以告诉make命令需要怎么样的去编译和链接程序
(任意的shell命令) make工作 默认执行 make 命令时, GNU make在当前目录下依次搜索下面3个文件 "GNUmakefile", "makefile", "Makefile", 如果找到...,它会找文件中的第一个目标文件(target),并把这个文件作为最终的目标文件。...如果target文件不存在,或是target所依赖的后面的 .o 文件的文件修改时间要比target这个文件新,那么,他就会执行后面所定义的命令来生成target这个文件。...如果target所依赖的文件也不存在,那么make会在当前文件中找依赖文件,如果找到则再根据那一个规则生成依赖文件。...典型的伪目标是 Makefile 中用来清理编译过程中中间文件的 clean 伪目标, 一般格式如下: .PHONY: clean <-- 这句没有也行, 但是最好加上 clean: -rm
Makefile包含 目标文件、依赖文件、可运行命令三部分。 ...每部分的基本格式例如以下: test: prog.o code.o gcc -o test prog.o code.o 当中,第一行的test是目标文件。...prog.o、code.o是依赖文件; 第二行的gcc -o test prog.o code.o是可运行命令。 整个Makefile文件都是这样的格式。...参考链接: https://blog.csdn.net/haoel/article/details/2886 Makefile 伪目标: https://www.cnblogs.com/hnrainll
Makefile 示例 # Makefile 示例 # 编译器 CC = gcc # 编译选项 CFLAGS = -Wall -g # 目标文件 TARGET = myprogram # 源文件...注意事项 空格问题: Makefile 使用 Tab 键而不是空格来缩进规则。 文件依赖: Makefile 的核心是文件之间的依赖关系,确保每个目标都依赖于正确的文件。...Makefile 规则 Makefile 通常包含规则(rules),规则描述了如何生成一个或多个目标文件。...make 使用一个名为 Makefile 的文件,其中包含了一系列规则和指令,描述了文件之间的依赖关系以及如何生成目标文件。以下是一个简单的 Makefile 文件的结构和基本要素: 11....注意到这个 Makefile 中的变量和规则可以根据项目的结构和需求进行适当的调整。 23. 安装规则 Makefile 可以包含安装规则,用于将可执行文件、库文件等安装到指定位置。
makefile文件由一组依赖关系和规则构成,每个依赖关系由一个目标和一组该目标所依赖的源文件组成,而规则描述了如何通过这些依赖文件创建目标,一般来说,目标是一个单独的可执行文件。...makefile文件 1.1 依赖关系 myapp: main.o 2.o 3.o main.o: main.c a.h 2.o: 2.c a.h b.h 3.o: 3.c b.h c.h 依赖关系定义了最终应用程序里的每个文件和源文件之间的关系... 如果想一次创建多个文件,可以利用伪目标all all: myapp myapp.1 建议约定:在自己的makefile文件中将第一个目标定为all,然后再列出其它重属目标 1.2...规则 makefile文件中一个非常奇怪而又令人遗憾的语法现象:空格和制表符是有区别的,规则所在的行必须以制表符开头,用空格是不行的,如果makefile文件中的某行以空格结尾,也可能导致make命令执行失败...文件中的宏 为了让makefile文件在面对大项目时不至于过于庞大和缺乏弹性,makefile文件允许使用宏以一种更通用的格式来书写它们 MACRONAME = value (MACRONAME
makefile文件用于管理和组织代码工程的编译和链接,其不是可执行文件,其被make工具解析并完成相关动作,下面笔者将介绍makefile中常用的一些语法说明: 1、文件包含: 语法:include...文件名 作用:将其它makefile文件包含进来,组成一个更大的makefile文件,这样有利于makefile模块化编程。...通常我们将一些配置选项分开成一个独立的makefile文件,这样有利于makefile文件的管理,或将模块代码的依赖关系和需要编译的文件信息独自写到一个 makefile文件中,最终通过include命令形成一个顶层...makefile文件来完成整个工程代码的编译和链接。...makefile文件中。
多文件目录Makefile写法 1、前言 linux下程序开发,涉及到多个文件,多个目录,这时候编译文件的任务量比较大,需要写Makefile 2、简单测试 测试程序在同一个文件中,共有func.h...、func.c、main.c三个文件,Makefile写法如下所示: 1 CC = gcc 2 CFLAGS = -g -Wall 3 4 main:main.o func.o 5 $...3、通用模板 实际当中程序文件比较大,这时候对文件进行分类,分为头文件、源文件、目标文件、可执行文件。...也就是说通常将文件按照文件类型放在不同的目录当中,这个时候的Makefile需要统一管理这些文件,将生产的目标文件放在目标目录下,可执行文件放到可执行目录下。测试程序如下图所示: ?...附:我的makefile: ######################################## #makefile ####################################
1.上一篇博客虽然简单实现了自动处理依赖关系,但是生成的各种临时文件都混在一起,太乱了。...假定我们的源文件放在src目录,头文件放在inc目录,.o文件放在obj目录,.d文件放在dmk目录,Makefile和上述4个目录为同一级别。.../inc D_OBJ = obj D_MK = dmk 2.自动遍历src目录下的所有.c文件 SRC_C = $(wildcard $(D_SRC)/*.c) # wildcard...$(D_SRC)的所有子目录同时把子目录下的.c文件遍历出来 假设src目录中有a.c,b.c,则$(SRC_C) 表示 src/a.c src/b.c 3.生成所有的.o文件依赖和.d文件集合 OBJ_C...notdir (SRC_C))中的.c替换成.o,即a.o b.o addprefix表示增加前缀$(D_OBJ)/,则OBJ_C变量表示为obj/a.o obj/b.o 4.明白了上述语句之后我们可以把makefile
说明: 1 在Linux下,一般使用GCC文件,比较头疼的问题,每次编写Makefile文件,比较麻烦,关键是经常忘记makefile语法; 2 最近玩树莓派,借鉴了网上多篇博客,...写了一个Makefile文件,具备小型项目的通用性,写下来,方便后续开发; 3 废话不多说,直接上: all: DemoApp #指定链接器 LD = gcc #指定编译器 CC.../debug/ #指定头文件搜索路径 INC = -I ./MCU_BSP_Lib/inc \ -I ./MCU_BSP_Lib/src \ -I ..../MCU_BSP_Lib/src/BSP_Api_Crypto #添加要连接的库文件 LINK = -l bcm2835 #添加要编译的.c文件 SRCS = .
在用sourceinsight查看ffmpeg源码的时候,大家会发现不能查看源码中的makefile代码,即不能搜索到makefile文件。...这是因为source insight默认是不选makefile的,也没有configure这种类型的文件。...下面就说如何让sourceinsight支持查看makefile和configure代码: (1)添加makefile: 进入Options -> Document Options-> 点击Document...Type的下拉框,然后选择Make File,在右边的File Filter中,在原先的*.mak后面加上一个分号,即多个不同过滤规则以分号间隔开,再加上*makefile,变成*.mak;*makefile...(2)添加configure: 点击 Add Type,填入新文件类型的名字configure,File Filter中写上*configure;configure*,再选中下面的Include when
在编译安装 openvpn 项目时遇到,其编译过程如下:生成 configure 可执行文件 make && make install ; 1. aclocal 2. autoconf 3. autoheader
Makefile编写 程序的编译和链接 使用C、C++编写可执行文件,首先要把源文件编译成中间代码文件,Linux下是.o文件,即Object File,这个动作叫做编译(complie)。...(链接目标程序) 只要我们的Makefile写的够好,我们只用一个make命令就可以完成,make命令会自动智能地根据当前文件的修改情况来确定哪些文件需要重新编译,从而自己编译需要的文件和链接生成可执行文件...这就是Makefile的规则,也就是Makefile中最核心的内容。..." 或 "makefile"的文件。...所以,为了makefile的易维护,在makefile中我们可以使用变量。makefile的变量也就是一个字符串。可以理解为C语言中的宏。
Linux内核源码文件繁多,搞不清Makefile、Kconfig、.config间的关系,不了解内核编译体系,编译修改内核有问题无从下手,自己写的驱动不知道怎么编进内核,不知道怎么配置内核,这些问题都和...Makefile、Kconfig、.config有关,下面简单谈谈Makefile、Kconfig和.config。...三者的作用: 简单来说就是去饭店点菜:Kconfig是菜单,Makefile是做法,.config就是你点的菜。 Makefile:一个文本形式的文件,编译源文件的方法。...三者的语法 Makefile 参考:linux-3.4.2/drivers/Makefile 作用:用来定义哪些内容作为模块编译,哪些条件编译等。子目录Makefile被顶层Makefile包含。...步骤: (1)在drivers目录下新建hello文件夹,里面实现hello.c、Makefile、Kconfig。
前言 这几天的实验让我觉得有必要学习一下makefile 参考博客:博客 会不会写makefile,从一个侧面说明了一个人是否具有完成大型工程的能力 makefile带来的好处是自动化编译 规则...上述make的工作方式 make寻找名为makefile或者Makefile的文件 寻找第一个目标文件,上述例子edit为最终的目标文件 如果edit文件不存在,那么make会寻找edit后的.o文件,...,但不要管,继续clean makefile的文件系统 如果你不想使用makefile或者Makefile的文件名,可以用make -f file,file是你的文件名。...读入被include的其它Makefile。 初始化文件中的变量。 推导隐晦规则,并分析所有规则。 为所有的目标文件创建依赖关系链。 根据依赖关系,决定哪些目标要重新生成。 执行生成命令。...文件,上级的makefile变量可以传到下一级: export ; 传递所有变量的话只需一个export,不需要任何变量名称 变量 变量可以使用变量: foo=$(bar)bar=$(ugh
Makefile是按照某种脚本语法编写的文本文件,而GNU make能够对Makefile中指令进行解释并执行编译操作。...Makefile文件定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。...2、Makefile的基本内容 Makefile一般包括包含:显式规则、变量定义、隐含规则、文件指示和注释等五个内容。 (1)显式规则:显式规则说明如何生成一个或多个的目标文件。...这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。...make命令,GNU make找寻默认的Makefile的规则是在当前目录下依次找三个文件——“GNUmakefile”、“makefile”和“Makefile”。
makefile 语法 目标:依赖 (tab)命令 如:add.o:add.c (一个tab缩进)gcc –Wall –g –c add.c –o add.o 目标:要生成的目标文件 依赖:目标文件由哪些文件生成...联合编译 makefile 上面的例子只是一个最简单的 makefile 的使用方法,但实际项目里面不可能只有一个文件,实际可能是多个 .c .h 组成,像这样的项目,我们该如何通过 makefile...,根本没有 .o 文件,makefile 去哪找这些 .o 文件呢?...,makefile 都会自动遍历到并生成 .o 文件了。...inc 是存放头文件的目录 obj 是生成的 .o 文件目录 src 是源文件目录 makefile 如下: src = $(wildcard .
make工具通过一个称为Makefile的文件来完成并自动维护编译工作,Makefile文件描述了整个工程的编译、连接规则。 2. Makefile文件 Makefile描述了整个工程的编译连接规则。...如果DEPENDENCIES中有一个或多个文件更新的话,COMMAND就要执行,这就是Makefile最核心的内容。 3....也可以生成指定的目标: $ make add.o 【指定只生成add.o文件】 Makefile文件的名字不一定得命名为“Makefile”或"makefile",使用其他名字也是可以的。...Makefile 自动化变量 从上面的Makefile文件我们发现一些问题:有时候目标文件的依赖列表过长,或者命令重复书写。利用Makefile自动化变量可以解决这个问题。...选项名 作用 $@ 规则的目标文件名 $< 规则的第一个依赖文件名 $^ 规则的所有依赖文件列表 刚才的Makefile文件,我们可以改写为: main:main.o add.o sub.o
make工具通过一个称为Makefile的文件来完成并自动维护编译工作,Makefile文件描述了整个工程的编译、连接规则。 回到顶部 2....Makefile文件 Makefile描述了整个工程的编译连接规则。Makefile的基本规则为: TARGET...: DEPENDENCIES... COMMAND ......也可以生成指定的目标: $ make add.o 【指定只生成add.o文件】 Makefile文件的名字不一定得命名为“Makefile”或"makefile",使用其他名字也是可以的。...Makefile 自动化变量 从上面的Makefile文件我们发现一些问题:有时候目标文件的依赖列表过长,或者命令重复书写。利用Makefile自动化变量可以解决这个问题。...选项名 作用 $@ 规则的目标文件名 $< 规则的第一个依赖文件名 $^ 规则的所有依赖文件列表 刚才的Makefile文件,我们可以改写为: main:main.o add.o sub.o
在软件开发过程中,Makefile是一个非常重要的工具,它可以帮助我们自动化构建、编译、测试和部署。然而,编写高效的Makefile文件并不是一件容易的事情。...在本文中,我们将讨论如何编写高效的Makefile文件,以提高我们的开发效率和产品质量 --- 确定目标 在编写Makefile文件之前,我们需要明确我们的目标是什么。...也就是说,哪些文件需要在哪些文件之前构建? 我们需要定义哪些规则来构建这些文件?这些规则应该包括什么? 一旦我们确定了这些问题,我们就可以编写Makefile文件并开始构建我们的项目。...例如,$@代表目标文件名,$<代表第一个依赖文件名。这些自动变量可以使我们的Makefile文件更加简洁和易于维护。 此外,我们可以使用其他自动变量来进一步简化我们的Makefile。...比如说,我们可以考虑在Makefile文件中添加一些注释,以帮助其他人更好地理解我们的Makefile。
前面写了一篇文章《Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile》,里面的Makefile代码有个不好的地方需要修改。...当编译.cpp文件时,使用的STD_OPT变量仍然是编译.c文件时的参数-std=c99,这个在C++中是不支持的。...1 sed命令的简要说明 由于sed命令可用的参数太多了,这里只列举脚本中用到的几个参数: 1 2 3 sed -i:直接修改文件而不是将处理的结果在屏幕上输出; sed -e:多个操作action按顺序执行...in ${ALL_MAKEFILE} do handle ${FILE} if [ $?...#echo "" | awk '{fflush()}' fi done 3 脚本执行结果 如上图所示,脚本不断遍历src目录下的Makefile文件,然后进行处理。
领取专属 10元无门槛券
手把手带您无忧上云