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

Makefile组成的规则不执行定义的其他规则

Makefile是一种用于自动化构建和管理软件项目的工具,它由一系列规则组成。每个规则由一个目标、依赖和命令组成。

在Makefile中,如果一个规则没有被执行,可能是由于以下几个原因:

  1. 目标不存在或者目标文件已经是最新的:Makefile中的规则通常用于生成目标文件。如果目标文件已经存在,并且它的时间戳比依赖文件的时间戳要新,那么该规则将被认为是最新的,不需要执行。
  2. 依赖文件没有发生变化:Makefile中的规则定义了目标文件所依赖的文件。如果这些依赖文件没有发生变化,那么该规则也不会被执行。
  3. 规则的命令没有正确执行:Makefile中的规则包含了一系列命令,用于生成目标文件。如果这些命令没有正确执行,那么规则也不会被执行。

为了确保Makefile中的规则能够正确执行,可以采取以下措施:

  1. 确保目标文件不存在或者目标文件的时间戳早于依赖文件的时间戳。
  2. 确保依赖文件的内容发生了变化,可以通过比较文件的哈希值或者时间戳来判断。
  3. 检查规则中的命令是否正确,并且能够成功执行。

总结起来,Makefile中的规则不执行定义的其他规则可能是由于目标文件已经是最新的、依赖文件没有发生变化或者规则的命令没有正确执行。为了确保规则能够正确执行,需要检查目标文件和依赖文件的时间戳,以及规则中的命令是否正确。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

实战Makefile前,该知道那些知识?

make与make clean 生成目标文件规则(make命令): 执行make命令则会根据当前目录Makefile文件定义规则生成对应目标文件。...如果Makefile其他名字,比如makefile.linux,则需要使用make参数(-f or --file)执行对应Makefile文件,例如: make -f makefile.linux...:增加伪目标:.PHONY:clean: .PHONY:clean clean: rm $(obj) *.o 注意: clean规则不要放在文件 开头,不然,会变成make默认目标,一般...命令出错规则(-符号): 当命令运行完,make会检测每个命令返回码,如果返回成功,那make会执行下一条命令,当所有的命令成功返回后,make执行完成。...从例子说明,mkdir出错并没有对其他命令产生影响,因为我只要目录存,所以mkdir出错不应该终止命令规则运行。

45920

Makefile教程

prerequisites中如果有一个以上文件比target文件要新的话,command所定义命令就会被执行。这就是Makefile规则。也就是Makefile中最核心内容。...3.Makefile内容 Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。 1.显式规则。显式规则说明了,如何生成一个或多个目标文件。...5.实例讲解 以三个源文件charset.cpp、network.cpp、buffer.cpp组成一个工程为例,为大家讲解Makefile基本内容与编写规则。...原来这种是老式“双后缀规则”,编译器会自动将Makefile所在目录.cpp识别为源文件后缀,而.o识别为输出文件后缀。特别需要注意是,后缀规则不允许任何依赖文件,但也不能没有命令。...8.小结 实际上,Makefile中还有很多基础知识点和复杂特性并未在文中赘述,比如各种函数用法、嵌套执行make、双后缀规则定义命令包等,这些需要我们在实际使用过程中去熟悉掌握。

3.9K53

linux下,Makefile是啥??

Makefile也可以为其他名字,比如makefile.linux,但你需要使用make参数(-f or --file)制定对应文件,例如: make -f makefile.linux Makefile...中文件, 其生成规则定义在command中。...在上述黄色自体中,可以明确是,make执行时,它会校验依赖文件更性时间,如果目标文件跟依赖文件时间一致,则不会相应命令。...Makefile包含什么内容 Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。 显式规则。显式规则说明了如何生成一个或多个目标文件。...由于我们make有自动推导功能,所以隐晦规则可以让我们比较简略地书写 Makefile,这是由make所支持。 变量定义

1.2K20

CC++项目构建指南:如何使用Makefile提高开发效率

此外,Makefile还可以根据源代码修改情况,自动更新目标文件,从而提高了构建效率和准确性 --- Makefile基础知识 Makefile由一系列规则组成。...中,我们定义了三个目录变量:SRCDIR表示源代码目录,OBJDIR表示编译生成目标文件目录,BINDIR表示可执行文件输出目录。...然后,定义了一个BIN变量表示最终生成执行文件名。最后,我们定义了两个规则来生成目标文件和可执行文件。...第一个规则使用模式匹配来生成目标文件,它表示将源代码目录下.c文件和.cpp文件编译成.o文件并保存到目标文件目录中。 第二个规则用来生成可执行文件。...在本文中,我们介绍了Makefile基础知识和如何使用Makefile构建C/C++项目。 除了使用Makefile可以自动化构建项目,还可以使用其他工具和技术来提高C/C++项目的效率。

36640

Makefile常用命令详解

本文将介绍Makefile中常用命令,以及如何使用它们来编译和管理项目 --- make make命令是最基本命令,用于执行Makefile文件中规则。...Makefile是由一系列规则组成,每个规则由目标、依赖和命令三部分组成。make会根据这些规则,自动确定哪些文件需要重新编译,哪些文件不需要编译。...target是要编译目标文件名,可以省略。如果省略,则默认执行Makefile文件中第一个目标。 --- clean clean命令用于删除生成目标文件。...--- install install命令用于将生成文件安装到指定目录中。在编译完成后,我们通常需要将生成执行文件或库文件安装到系统中,以便其他程序使用。...--- 自定义命令 除了上述常用命令外,Makefile还支持自定义命令。例如,我们可以定义一个命令来运行项目的测试:  test:     .

55231

Linux中Makefile文件详解

规则命令中使用时,用 (CC) 和 (CFLAGS) 替代具体值。 9. include 指令 Makefile 可以包含其他 Makefile,使用 include 指令。...基本结构 Makefile 文件由一系列规则和变量组成。每个规则描述了一个或多个目标文件生成方式。...规则 规则由以下几部分组成: 目标(Target): 描述生成文件名称。可以有多个目标,以空格分隔。 依赖关系(Dependencies): 描述目标文件依赖文件。...# 包含其他 Makefile 文件 include other.mk 18....注意到这个 Makefile变量和规则可以根据项目的结构和需求进行适当调整。 23. 安装规则 Makefile 可以包含安装规则,用于将可执行文件、库文件等安装到指定位置。

79210

Linux学习笔记(二)、常用指令(下)

2)、找到Makefile文件以后按照Makefile定义规则去编译生成最终目标文件。 3)、如果目标文件不存在或者目标所依赖文件比目标文件新的话就会执行后面的命令来更新目标。...模式规则中,至少在规则目标定义中包含“%”,否则就是一般规则,目标中“%”表示对文件名匹配,“%”表示任意长度非空字符串,比如“%.c”就是代表所有以.c结尾文件。...自动化变量将模式中所定义一系列文件自动逐个取出,直到所有的符合模式文件都取完,自动化变量只应该出现在规则命令中。 ? ? 最终makefile变为: ?...一般文件名都是要生成伪文件,而伪目标不代表真正目标名,在执行make命令时通过指定这个伪目标来执行器所在规则定义命令。...伪目标的主要作用是避免Makefile定义执行命令目标和工作目录下实际文件出现名字冲突。

2.4K21

make与makefile

同时这些依赖也有可能此时并不存在,需要现场制作,或者是由其他厨师做好,那么这个依赖就成为了其他规则目标,该目标也会有他自己依赖和命令。这样就形成了一层一层递归依赖组成Makefile文件。...Makefile并不会关心命令是如何执行,仅仅只是会去执行所有定义命令,和我们平时直接输入命令行是一样效果。 1、目标即要生成文件。...当你在命令行中运行make时,make命令会寻找并执行all目标规则,这将依次执行target1、target2和target3编译规则。...定义伪目标的主要意义在于: 命名约定:通过定义伪目标,可以对常用操作或任务进行命名约定,使得其他开发者或使用者能够清晰地理解该目标的用途和作用。...组织和管理构建任务:伪目标可以用来组织和管理构建流程中各个任务或操作。通过定义伪目标,可以将相关任务组织在一起,并通过依赖关系和命令定义来控制它们执行顺序。

6910

makefile基础和工作常用点补充

定义编译规则、自动化编译、提高效率 组织文件 Makefile由一组规则(Rule)组成,每条规则格式是: 例如: 依赖关系如下图: 注意: (1) 当我们为了执行命令而非创建目标文件时,就会使用伪目标比如...(5) 在工作目录按 "GNUmakefile、makefileMakefile (推荐)" 顺序查找执行,或 -f 指定。.../lib/libdown.so 等同 二、Makefile基本使用 make规则 没被编译过,则编译;只编译修改过文件 头文件被改变,只编译包含该头文件文件 常用选项 : -C dir    -...f fileName  -n 显示待执行命令,但不执行 Makefile组成 显式规则:生成、依赖文件,生成命令 隐含规则:make支持自动推导功能, make –p 打印 变量定义:类C...vpath %.c  # 取消该模式 vpath  # 取消所有模式 VPATH 和 vpath 定义搜索路径仅对 makefile 规则有效,对 gcc/g++ 命令行无效,比如不能用它定义命令行头文件搜索路径参数

1.4K00

Linux 开发 | 学习 Makefile

---- Makefile概述 基本格式 基本上每一个 Makefile 主体就是由若干个以下规则模块组成 : 表明输出目标,输出目标的依赖对象和生成目标需要执行命令。...Makefile 主要组成 显式规则 明确写出来依赖关系,如上述 prerequisites.......include 其他 Makefile : -include xx.md; 选择执行(类似选择编译 #ifdef...); 定义多行命令(define ... endef) 注释 以 # 开头 Make...读入被 include 其他 Makefile,在对应位置展开 初始化变量 推导隐式规则;分析所有规则,创建依赖关系链,决定哪些需要【重新】生成,执行命令。 从第一个 target(排除以 ....很正常,希望测试时候命令不是真的执行,但是包含其他 Makefile 这种命令是例外,必须执行,不然 Makefile 就不完整了, 我是这么理解

5.3K10

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

因此,我们应该将Makefile放在我们将要执行任务根目录中,或者调用我们将要编写脚本最有意义地方。 在Makefile中,我们遵循特定格式。...例如,如果要对文件执行命令(如果存在),则此操作可能很有用,如果不存在则不执行任何操作。 @:如果使用“@”符号引导命令,则命令调用本身不会打印到标准输出。这主要用于清理产生输出。...附加功能 一些其他功能可以帮助您在Makefile中创建更复杂规则链。 变量 Make识别变量(或宏),它在makefile中作为替换简单占位符。最好在文件顶部声明这些内容。...将此视为目标文件和源文件之间中间阶段。 创建转换Makefile 我们将创建一个Makefile,它将执行一些图像处理,然后将文件上传到我们文件服务器,以便我们网站可以显示它们。...Make将转到Makefile,请参阅.SUFFIXES声明中.png,然后转到匹配后缀规则。然后运行列出命令。

2.3K00

Linux 下make命令与Makefile

-C dir:在读取makefile 之前改变到指定目录dir; -I dir:当包含其他makefile文件时,利用该选项指定搜索目录; -h:help文挡,显示所有的make选项; -w:在处理...这是make默认行为。当然,你makefile第一个目标是由许多个目标组成,你可以指示make,让其完成你所指定目标。...检查规则 有时候,我们不想让我们makefile规则执行起来,我们只想检查一下我们命令,或是执行序列。...j: 也就是jobs,输出执行规则中命令详细信息,如命令PID、返回码等。 m: 也就是makefile,输出make读取makefile,更新makefile执行makefile信息。...(“茎”被传递) 重载内建隐含规则 你可以重载内建隐含规则(或是定义一个全新),例如你可以重新构造和内建隐含规则不命令,如: %.o : %.c (CC) -c (CPPFLAGS) (

10.1K20

什么是makefile(3)

七、清空目标文件规则 每个Makefile中都应该写一个清空目标文件(.o和执行文件)规则,这不仅便于重编译,也很利于保持文件清洁。...而在rm命令前面加了一个小减号意思就是,也许某些文件出现问题,但不要管,继续做后面的事。当然,clean规则不要放在文件开头,不然,这就会变成make默认目标,相信谁也不愿意这样。...Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。 1、显式规则。显式规则说明了,如何生成一个或多目标文件。...由于我们make有自动推导功能,所以隐晦规则可以让我们比较粗糙地简略地书写Makefile,这是由make所支持。 3、变量定义。...在Makefile中我们要定义一系列变量,变量一般都是字符串,这个有点你C语言中宏,当Makefile执行时,其中变量都会被扩展到相应引用位置上。 4、文件指示。

55820

日常记录(6)Verilog

Makefile Makefile拆分为两部分,进行逐个解释。...make默认执行第一个规则,第一个规则名为all,其依赖了所有的object,即该文件夹下所有.o文件。在执行该条语句前,应该先执行所有的.o对应规则,当所有的.o规则满足后,则执行编译过程。...其中$^表示了本条规则下所有依赖文件名,$@表示本条编译规则名称,即all。当执行本条命令,则会生成一个名称为all执行文件。...每个target.d文件生成依赖于对应target.c和*.h文件。当.d文件发生变化,则执行对应make规则。即.d文件表达了替换名。...随后%d:%c以及%d:%cpp则对应执行了需要命令。.d文件若是最新,则.d对应规则不会被执行。clean也是一样。当目录下存在一个为clean文件,则对应规则不会被执行

50530

linux: Makefile编写技巧温故

本文将介绍一些常见Makefile编写技巧,帮助运维工程师更好地利用Makefile来自动化任务。 1. 基础语法 Makefile 由一系列规则组成,每条规则定义了一个目标及其依赖和生成方式。...使用变量 在Makefile中使用变量可以提高可读性和可维护性。变量可以在定义时赋值,也可以通过命令执行时赋值。...组合规则和伪目标 伪目标用于定义不生成文件目标,通常用于清理、测试等任务。使用.PHONY声明伪目标可以避免与文件名冲突。...高效自动化任务 通过使用模式规则,可以简化重复规则定义,提高Makefile可维护性。...无论是简单脚本执行还是复杂系统部署,Makefile都能提供强大支持。

11410

Makefile基础语法

Makefile 是描述文件依赖关系说明,由若干个规则组成,每个 规则 格式如下: 目标:依赖关系 命令 其中: 目标 是指 make 最终要创造产物,也是 make 执行动作名称...,例如 clean ; 依赖关系 是指编译目标体需要依赖一个或多个文件列表; 命令 是指为了从依赖文件创造目标文件所需执行命令。...make 执行动作也是一个目标,为避免该目标和文件目标冲突,可以使用以下格式将动作指定伪目标: .PHONY: clean clean: rm *.o temp 在使用时,在具有 Makefile...除了 Makefile ,还可将文件命名为 GNUmakefile, makefile ,命令执行时按照 GNUmakefile,Makefilemakefile 顺序搜索 Makefile 文件...预定义变量 为使命令编写更快捷,免去无意义重复操作,有一些预定义变量可以用于简化 Makefile

80120

makefile 基础、进阶及常用 makefile

命令:通过执行该命令由依赖文件生成目标 makefile 工作原理 1、若想生成目标,检查规则依赖条件是否存在,如不存在,则寻找是否有规则用来生成该依赖文件 2、检查规则目标是否需要更新,必须先检查它所有依赖...联合编译 makefile 上面的例子只是一个最简单 makefile 使用方法,但实际项目里面不可能只有一个文件,实际可能是多个 .c .h 组成,像这样项目,我们该如何通过 makefile...makefile 了,但是还不算完美,后面我们再引入其他 makefile 特性,先在这个项目目录下执行一次 make 命令,看看编译效果如何。...makefile 自动变量 makefile 中有一些预定义变量,你可以理解它像是 C 语言中一些关键字,分别有不同意义,我们列举几个常用自动变量(其他还有很多),通过上面的 makefile...$@:在命令中使用,表示规则目标 $<:在命令中使用,表示规则第一个条件 $^:在命令中使用,表示规则所有条件,组成一个列表,以空格隔开,如果这个列表中有重复项则消除重复项。

32910

makefile

前言 这几天实验让我觉得有必要学习一下makefile 参考博客:博客 会不会写makefile,从一个侧面说明了一个人是否具有完成大型工程能力 makefile带来好处是自动化编译 规则...文件要新的话,command所定义命令就会被执行。...一直套娃下去 最终生成可执行文件 在找寻的过程中,如果出现错误,比如最后被依赖文件找不到,那么make就会直接退出,并报错,而对于所定义命令错误,或是编译不成功,make根本不理。...makefile中包含其他makefile指令如同c++ 一样: -include foo.make a.mk b.mk c.mk e.mk f.mk 减号仍然表示不管怎样报错都继续执行下去,上面的命令可以采用部分正则规则简化...读入被include其它Makefile。 初始化文件中变量。 推导隐晦规则,并分析所有规则。 为所有的目标文件创建依赖关系链。 根据依赖关系,决定哪些目标要重新生成。 执行生成命令。

1.1K20

Makefile基础教程:从零开始学习

本篇博客将从基础开始,介绍Makefile相关知识,帮助大家快速掌握Makefile使用方法 Makefile是什么 Makefile是一个非常强大构建程序工具,主要用于管理程序依赖关系和构建规则...Makefile基本语法 Makefile基本语法由目标、依赖关系和命令三部分组成,其中目标和依赖关系用于描述构建规则,命令用于执行构建操作。...此外,在Makefile中可以定义变量,以便在构建过程中使用。这些变量可以存储文件路径、编译器选项等信息。 除此之外,在Makefile中还可以使用函数和宏来实现更加灵活构建规则。...: 卸载程序 除了这些基本命令之外,我们还可以在Makefile中使用其他命令来更好地管理我们代码。...以下是一些可能有用想法: 可以使用自定义变量,例如指定编译器、编译选项、源代码目录等。 可以使用条件语句,例如根据不同操作系统或不同编译选项来决定是否编译某些代码。

35920
领券