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

Makefile基本用法

可以使用符号配合转义符,由于转义后的与空格,不存在,被替换为空,则形成第三行。 ? ? ?...名为GUNmakefile和Makefile的文件同时存在,则使用前者。 调用方法过程中,若前者不存在,则如下脚本给出了如何寻找后者是否存在所需要调用的方法,然后执行。...force给出一行空依赖显式声明,防止force作为%的一员,被隐式自身依赖自身的隐式构建。...随后按原始顺序执行规则。 ? 通配符 *.o 匹配所有的.o文件, ? $?匹配修改过的文件 ? 赋值过程中没有被理解为通配符,而是认为就是*.o本身,需要使用wildcard和$进行声明。 ? ?...当一个先决条件的名称的格式为'-lname'时,make通过搜索文件来专门处理它libname.so文件 如果找不到,则在当前目录中的libname.a文件中 在通过匹配vpath搜索路径和vpath搜索路径指定的目录中

2.5K40

Make 快速入门

Makefile 在使用 make 之前,你必须在当前目录下添加一个 Makefile 文件,它描述了文件之间的依赖(输入输出)关系,并提供更新文件的 Shell 命令。...在不使用项目中安装的包的情况下,即项目目录下 node_modules 里的包,完全可以使用 Makefile 来完成一些构建任务,make 的优势在于更好管理相互依赖的构建任务。 3....隐式规则 某些重新生成目标文件的方式非常常用。例如,使用 C 编译器 cc 从 .c 源文件编译生成 .o 目标文件。...隐式规则将告诉 make 如何使用常用的技术,让你在使用时不必给出全部细节,简化书写。例如,make 为 C 语言编译提供一个隐式规则。文件名决定将应用哪个隐式规则。...比如,C 编译通常输入 .c 文件,输出 .o 文件。 因此,当看到文件名结尾符合这种组合时,make 将隐式规则应用于 C 编译。

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

    【Linux笔记】make工程管理工具(二)

    但是在Linux 下一般不具有IDE,所以我们需要学会如何使用make工具来编译。 3、Makefile文件的书写规范 Makefile文件中最重要的是规则。...Makefile文件主要包含5个方面内容:显示规则、隐式规则、变量、文件指示、注释、实目标与伪目标等。 (1)显式规则。显式规则说明了,如何生成一个或多的的目标文件。...(2)隐式规则。隐含规则是系统或用户预先定义好的一些特殊规则,主要是一些常用的依赖关系和更新命令。一般规则使用文件的全名,而隐含规则中出现的目标文件和依赖文件都只使用文件的扩展名。...如果你要在你的Makefile 中使用#字符,可以用反斜框进行转义,如:\#。 (6)实目标与伪目标。Makefile 文件中的目标分为两类:实目标和伪目标。...4、make是如何工作的? 当我们只输入make 命令。那么: (1)make 会在当前目录下找名字叫Makefile或makefile的文件。

    1.7K10

    Makefile

    在本教程中,我们将由浅入深,一步一步学习如何编写Makefile,完全针对零基础小白,只需要提前掌握如何使用Linux命令。...Makefile基础 在Linux环境下,当我们输入make命令时,它就在当前目录查找一个名为Makefile的文件,然后,根据这个文件定义的规则,自动化地执行任意命令,包括编译命令。...使用隐式规则 Makefile支持许多内置的隐式规则,例如编译C语言程序的规则: %.o: %.c $(CC) $(FLAGS) $< 含义: 将每个 .c 文件编译为对应的 .o 文件(对象文件...$文件。 所以该规则会使*.c从第一个开始,逐个编译为对应的.o文件。 小结:隐式规则让Makefile更简洁,很多情况下不需要显式定义规则。...为此,可以使用如下方式: -include deps.d 这表示如果deps.d不存在,Makefile将不会报错。

    12410

    可移植的 Makefile 教程

    虽然每个实现都实现了与 GNU Make 完全相同的一些扩展,但是它会捕获一些常见的错误。 什么是 Makefile?...规则也需要指定 Shell 命令,这些 Shell 命令会被用于从先决条件中生成目标。 如果你打算创建示例中的源文件,并调用 make, 你会发现它实际上已经知道了它该如何构建目标文件。...更多实际目标,可以作为必要条件加入到默认目标中。这个 Makefile 的使用者也可以使用 make all 来构建整个项目。 另一个常见的伪目标是 clean,它会移除所有 make 创建的文件。...在一个推断规则中,目标隐式表明了扩展名是什么。$规则变得更加通用十分重要。不幸的是,这个宏在目标规则中并不存在,这些都是有用的。...你可能需要告诉你的编辑器如何做到这一点。 当涉及子目录下的文件时,在名字中包含子目录即可。所有 make 关心的内容都会跟之前一样正常工作,包括推断规则。

    1.4K10

    linux下,Makefile是啥??

    为什么要学习Makefile? Linux环境下的程序员如果不会使用GNU make来构建和管理自己的工程,应该不能算是一个合格的专业程序员,至少不能称得上是Unix程序员。...《概念篇》 Makefile的概念 一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,Makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译...Makefile的命名规则 默认的情况下,make命令会在当前目录下按顺序找寻文件名为“GNUmakefile”、 “makefile”、“Makefile”的文件,在这三个文件名中,最好使用“Makefile...如果main所依赖的.o文件也不存在,那么make会在当前文件中找目标为 .o文件 的依赖性,如果找到则再根据那一个规则生成.o文件。...Makefile包含什么内容 Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。 显式规则。显式规则说明了如何生成一个或多个目标文件。

    1.2K20

    如何使用Makefile在Ubuntu上自动执行重复任务

    它建议您使用Makefile,因为GNUmakefile是针对GNU特定的命令,而makefile并不突出。 Makefile是特定于目录的,这意味着make将在调用它的目录中搜索以查找这些文件。...然后它将在目录中查找“.png”替换为“.jpg”的目标文件。然后它将执行后面的命令。 后缀规则使用了一些我们尚未介绍的变量。这些帮助根据当前流程的哪个部分替换不同的信息: $?...如果没有.jpg文件,这实际上会尝试在名为“*.jpg”的文件上运行转换命令,这将失败。 我们上面提到的通配符语法编译当前目录中的.jpg文件列表,如果不存在,则不会将变量设置为任何内容。...您可能会注意到隐式调整大小将运行与convert相同的命令。我们将指定它们两者,尽管并非总是如此。转换可以在将来包含更精细的处理。 webify目标现在可以转换图像并调整其大小。...结论 ---- 此时,您应该很好地了解如何使用Makefile。更具体地说,您应该知道如何使用make作为自动执行大多数过程的工具。

    2.4K00

    makefile终极奥义

    那就要说说 make 是如何工作的 make是如何工作的 在默认的方式下,也就是我们只输入 make 命令。那么, make会在当前目录下找名字叫“Makefile”或“makefile”的文件。...如果 edit 所依赖的 .o 文件也不存在,那么make会在当前文件中找目标为 .o 文件的依赖性,如果找到则再根据那一个规则生成 .o 文件。...上述还只是简单的makefile,属于「显式规则」,那么为了优化makefile我们介绍「隐式规则」 makefile中使用变量 在Makefile中我们要定义一系列的变量,变量一般都是字符串,这个有点...-name "*.c") 将当前目录及其子目录下所有文件后缀为 「.c」 的文件以空格为限赋值给 SRC 最终版本 先总结一下前面都讲了些什么 Makefile里主要包含了五个东西:「显式规则」、「...显式规则。显式规则说明了如何生成一个或多个目标文件。这是由Makefile的书写者明显指出要生成的文件、文件的依赖文件和生成的命令。 隐晦规则。

    1.3K30

    makefile基础和工作常用点补充

    定义编译规则、自动化编译、提高效率 组织文件 Makefile由一组规则(Rule)组成,每条规则的格式是: 例如: 依赖关系如下图: 注意: (1) 当我们为了执行命令而非创建目标文件时,就会使用伪目标比如...PHONY" 的作用是避免和当前 目录下的文件名冲突 (可能引发隐式规则)。...(8) 在makefile 常见的gcc/g++参数 -D 即条件编译; -static 使用静态库;注意 -L../lib -ldown  与 ...../lib/libdown.so 等同 二、Makefile基本使用 make规则 没被编译过,则编译;只编译修改过的文件 头文件被改变,只编译包含该头文件的文件 常用选项 : -C dir    -...f fileName  -n 显示待执行的命令,但不执行 Makefile组成 显式规则:生成、依赖文件,生成命令 隐含规则:make支持的自动推导功能, make –p 打印 变量定义:类C

    1.4K00

    Linux 开发 | 学习 Makefile

    Makefile 主要组成 显式规则 明确写出来的依赖关系,如上述的 prerequisites.......隐式规则 Make 自己推导出来的规则,比如目标为 main.o 就推出依赖条件中需要 main.c和对应的编译命令 变量定义 类似程序中宏定义, 文本替换。...读入被 include 的其他 Makefile,在对应位置展开 初始化变量 推导隐式规则;分析所有规则,创建依赖关系链,决定哪些需要【重新】生成,执行命令。 从第一个 target(排除以 ....文件日期比 edit 新或者 edit 不存在,那么依赖关系就发生了。 发生依赖关系,Make 就会去执行下面的命令(tab缩进),其说明 edit 是如何通过依赖对象生成的。...上层 Makefile 中定义的变量是可以在被调用的下一层 Makefile 中使用的, 前提是该变量在上层中被显式暴露 export,同理,可以采用 unexport取消。

    5.4K10

    自动化构建-makeMakefile 【Linux基础开发工具】

    一、背景 • 会不会写makefile,从一个侧面说明了一个⼈是否具备完成大型工程的能力 • 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定...可见,makefile都成为了一种在工程方面的编译方法。 • make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。...因此,通过在Makefile中设置all作为默认目标规则,你可以简化构建过程,只需运行make命令即可执行整个编译过程,无需显式指定目标 三、变量 符号表示取变量的值,当变量名多于一个字符时,使用"(...列如在子目录subdir目录下有个Makefile文件,来指明这个目录下文件的编译规则。...如果 myproc 所依赖的 myproc.o 文件不存在,那么 make 会在当前文件中找目标为myproc.o 文件的依赖性,如果找到则再根据那一个规则生成 myproc.o 文件。

    14110

    Linux从入门到入土③(GCC、静态与动态链接库、Git、Make、Makefile)

    /test //执行可执行程序静态与动态链接库不管是 Linux 还是 Windows 中的库文件其本质和工作模式都是相同的,只不过在不同的平台上库对应的文件格式和文件后缀不同。...makefile 文件有两种命名方式 makefile 和 Makefile,==构建项目的时候在哪个目录下执行构建命令 make 这个目录下的 makefile 文件就会别加载,因此在一个项目中可以有多个...如果规则中的目标对应的文件根本就不存在, 那么规则中的命令肯定会被执行。...在 Makefile 中只要给出需要构建的目标文件名(一个.o 文件),make 会自动为这个.o 文件寻找合适的依赖文件(对应的.c 文件),并且使用默认的命令来构建这个目标文件。...makefile 文件中只有一条规则,依赖中所有的 .o 文件在本地项目目录中是不存在的,并且也没有其他的规则用来生成这些依赖文件,这时候 make 会使用内部默认的构造规则先将这些依赖文件生成出来,然后在执行规则中的命令

    1.6K10

    【Linux系统编程】—— 自动化构建工具Makefile指南

    背景 Makefile 是衡量开发者是否具备完成大型工程能力的一个重要标志。在一个工程中,源文件的数量可能极多,这些文件会按照类型、功能或模块分布在多个目录中。...Makefile 通过定义一系列规则,指定文件的编译顺序、依赖关系以及清理规则,从而实现自动化构建。...将Makefile比作一个人月底的工资,那么一个人工资的各种组成计算就是Makefile的规则 基本使用 在云服务器当中我们可以创建一个文件比如code.c 在文件当中写入 #include 的工作机制 文件检测:Make 在当前目录中查找名为 Makefile 或 makefile 的文件。...错误处理:如果缺少依赖文件或命令失败,Make 会停止执行并报错。 文件依赖性示例: 如果 code.c 的修改时间较新,则重新生成所有依赖的文件。 如果目标文件不存在,则根据依赖规则逐层构建。

    13610

    make与makefile

    同时这些依赖也有可能此时并不存在,需要现场制作,或者是由其他厨师做好,那么这个依赖就成为了其他规则的目标,该目标也会有他自己的依赖和命令。这样就形成了一层一层递归依赖组成了Makefile文件。...Makefile并不会关心命令是如何执行的,仅仅只是会去执行所有定义的命令,和我们平时直接输入命令行是一样的效果。 1、目标即要生成的文件。...因此,通过在Makefile中设置all作为默认目标规则,你可以简化构建过程,只需运行make命令即可执行整个编译过程,无需显式指定目标。...组织和管理构建任务:伪目标可以用来组织和管理构建流程中的各个任务或操作。通过定义伪目标,可以将相关的任务组织在一起,并通过依赖关系和命令定义来控制它们的执行顺序。...假如我们在系统的某一个目录下,创建一份名为hello.cc的文件,那么我们就在同一个目录下创建一个依赖对象为hello.cc的makefile即可,当我们进入目录后,在命令行中输入make,系统就会在这一目录下查找是否存在

    8710

    Make

    让我们构建一个makefile,它创建一个readme.txt文件,该文件自动填充有关当前目录的一些信息。...如果我们看一下我们之前草拟的一般规则格式,我们可以看到我们没有为该规则指定任何依赖项。依赖项是目标在构建时所依赖的文件。如果自上次为目标运行make以来,依赖项已经更新,则目标不是“最新的”。...通过这种方式,对依赖项的更改被合并到目标中。为了避免不必要地运行命令,这些命令只在依赖项改变时运行,或者当目标根本不存在时运行。 让我们更新makefile,以包含自动生成的readme.txt。...的顶部创建一个名为all的规则,在该规则中我们可以列出由makefile构建的所有文件。...通过添加all目标,我们可以在不带任何参数的情况下运行make来构建makefile中的所有目标。

    1.6K30

    Makefile教程

    3.Makefile内容 Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。 1.显式规则。显式规则说明了,如何生成一个或多个的目标文件。.../lib 指明Makefile寻找依赖项时,若当前工作目录不存在,则去VPATH指明的目录去寻找。各目录以“:”号隔开。 (4)编译器。...那么如何解决这个遗憾呢?其实可以让编译器自动推导源文件使用了哪些头文件,这样我们就可以将源文件使用的头文件添加到目标obj文件的依赖项中,读者可参考网上的资料,自行给出实现。...7.10如何使用shell脚本给Makefile变量赋值 Makefile可以内嵌shell脚本,但是在内嵌的shell脚本只能读取Makefile的变量,如何给Makefile变量赋值呢?...-include:作用与include相同,区别在于无法找到被包含的Makefile时,Makefile不报错。 sinclude:等同于-include,是一个兼容的写法。

    4.1K53

    CMake,大型项目采用的构建工具

    本篇文章主要描述CMake的基本用法。在之前的文件中我对Makefile,Autotools这两个构建工具。相关文章如下: 《linux下,Makefile是啥??》...比如只有几个文件的构建,使用Makefile是最好的选择。而autotools和CMake大多都是应用在大型的项目上。接下来讲讲新工具: CMake的特点 开放源代码。...我们准备一下这两个文件。其中main.c是我们要编译的源文件,CMakeLists.txt是关键,他就是告诉cmake如何编译。可以理解为编译的规则。...SOURCE_LIST 中定义的源文件列表 内部构建和外部构建 在上面的例程中,我们是采用的内部构建,会看到cmake生成的临时文件比我们编写的源文件还要多,而且在同一级目录下。...当我们要删除这些中间文件时会显得特别麻烦。所以有什么办法变得更加干净简洁呢?答案是采用外部构建。 外部构建简单理解就是将cmake生成的中间文件与源文件分离。不让他们同一级目录。

    1.1K20

    Make 命令教程

    像这样的规则,都写在一个叫做Makefile的文件中,Make命令依赖这个文件进行构建。Makefile文件也可以写为makefile, 或者用命令行参数指定为其他文件名。...总之,make只是一个根据指定的Shell命令进行构建的工具。它的规则很简单,你规定要构建哪个文件、它依赖哪些源文件,当那些文件有变动时,如何重新构建它。...二、Makefile文件的格式 构建规则都写在Makefile文件里面,要学会如何Make命令,就必须学会如何编写Makefile文件。..."目标"是必需的,不可省略;"前置条件"和"命令"都是可选的,但是两者之中必须至少存在一个。 每条规则就明确两件事:构建目标的前置条件是什么,以及如何构建。下面就详细讲解,每条规则的这三个组成部分。...f1.o: f1.c f2.o: f2.c 使用匹配符%,可以将大量同类型的文件,只用一条规则就完成构建。 3.5 变量和赋值符 Makefile 允许使用等号自定义变量。

    2K40

    快来用Makefile管理工程,提高工作效率!

    Makefile 文件中包含了一系列的规则来指导如何产生目标文件,这些规则包含目标、依赖和命令: 目标(Target):这通常是要生成的文件名,例如可执行文件或者对象文件。...依赖(Dependencies):这是生成目标所需的文件或目标。 命令(Commands):这些是生成目标时需要执行的命令。 Makefile 使用 GNU make 工具来执行文件中定义的规则。...当在命令行中运行 make 命令时,make 程序会在当前目录下查找名为 Makefile 或 makefile 的文件,并执行其指令。...Makefile 能够通过条件编译指令来适配不同的硬件平台,让相同的源代码可以在不同的硬件上编译并运行。 代码优化:为了提高嵌入式系统的性能和效率,开发者常常需要对代码进行特定的优化。...SCons: 用途:一个使用 Python 脚本代替传统 Makefile 的构建工具。 特点:SCons 能自动处理依赖关系,提供更精确的构建过程控制。它支持跨平台构建,非常适合复杂的嵌入式项目。

    16310
    领券