首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

makefile中伪目标的理解

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

1.5K80

我能看懂的MakeFile(自命名,多文件,多目标

我们的目标文件(就是拿来运行的那个)其实就是通过文件之间的依赖关系,对源文件进行编译而得到的,但是这个依赖关系系统不知道,所以需要我们告诉系统。Makefile就是一种很优秀的方法。...all : front back log sql .PHNOY : all 这两行的意思是:.PHNOY:all将all定义为一个伪目标,不用管那么多,只要知道这样就可以生成多个目标了。...all:front back log sql里面的front back log sql这四个都是目标,可以一次性生成。 当然,你不用伪目标的话应该是不行了。...下面那个clean,也是一个伪目标。 rm -rf ***** 用于将多余文件删除,不过需要手动调用。 调用方式: make -clean。 然后再讲一点,给Makefile命名。...如果你不想你的Makefile文件都叫Makefile,可以自己起个名字。 然后运行的时候这样:make -f 名字 清楚的时候这样: make -f 名字 -clean

97030

Make

执行make命令需要一个Makefile文件,来定义整个项目的编译规则。makefile定义了模块间的依赖关系,指定文件的编译顺序,以及编译所使用的命令。...###二、Make的一般使用: 1、Makefile的基本构成: Makefile由规则构成,一条规则生成一个或多个目标文件,其格式如下: 目标文件列表 分隔符 依赖文件列表 [;命令] //[]中的内容可选...Makefile也可以命名为makefile,若命名为其他文件名,则需要用-f或--file选项来告知make哪一个是makefile文件。...2、Makefile文件的构成: 一个完整的makefile文件由5个部分构成:显式规则、隐含规则、变量、文件指示和注释。 显式规则:一条显式规则指名了目标文件、目标文件的依赖关系、命令。...特殊目标: .PHONY:伪目标,如上 .IGNORE:对于该目标后的依赖文件,生成时如遇到错误则可跳过错误继续执行,不会中断make。

1.9K100

makefile 基础、进阶及常用 makefile

makefile 语法 目标:依赖 (tab)命令 如:add.o:add.c (一个tab缩进)gcc –Wall –g –c add.c –o add.o 目标:要生成的目标文件 依赖:目标文件由哪些文件生成...,依赖中有任一个被更新,则目标必须更新 分析各个目标和依赖之间的关系 根据依赖关系自底向上执行命令 根据修改时间比目标新,确定更新 如果目标不依赖任何条件,则执行对应命令,以示更新 一个最简单的 makefile...makefile 中的 all 因为 makefile 的执行流程是找到第一个目标作为最终生成的目标,如果顺序错乱了,makefile 就可能报错,all 方法就是解决这个问题而存在的,并且,all 方法可以让一个...makefile 生成多个目标。...命令时会判断这个目标所依赖的内容是否有变化,如有变化则重新生成,无变化则跳过,而恰恰我们这个 clean 没写依赖规则!

32510

5个编写高效Makefile文件的最佳实践

在本文中,我们将讨论如何编写高效的Makefile文件,以提高我们的开发效率和产品质量 --- 确定目标 在编写Makefile文件之前,我们需要明确我们的目标是什么。...为了确定目标,我们需要考虑以下问题: 我们正在编译哪些文件?这些文件在哪里? 这些文件之间有什么依赖关系?也就是说,哪些文件需要在哪些文件之前构建? 我们需要定义哪些规则来构建这些文件?...例如,$@代表目标文件名,$<代表第一个依赖文件名。这些自动变量可以使我们的Makefile文件更加简洁和易于维护。 此外,我们可以使用其他自动变量来进一步简化我们的Makefile。...代表所有比目标文件更新的依赖文件列表。我们还可以使用通配符来匹配多个文件,例如*.c表示所有.c文件。 --- 使用模式规则 使用模式规则可以使我们更加灵活地编写Makefile文件。...--- 使用.PHONY规则 .PHONY规则可以使我们更加精确地指定Makefile文件中的目标。它告诉make命令,某个目标是一个伪目标,不是一个实际的文件名。

28120

Makefile 入门教程

基本概念 目标 (Targets):在 Makefile 中,目标是要生成的文件或执行的操作的名称。目标可以是文件名,也可以是伪目标,用于执行特定任务而不生成文件。...依赖项 (Dependencies):依赖项是与目标相关联的文件或其他目标,它们在目标生成之前必须存在或已经生成。 规则 (Rules):规则定义了如何生成目标以及生成目标所需的命令。...命令 (Commands):命令是在生成目标时要执行的操作。命令必须以 Tab 键开头。 变量 (Variables):变量用于存储文本或命令,并可以在整个 Makefile 中重复使用。...Makefile 语法 一个基本的 Makefile 规则的语法如下: target: dependencies command target:要生成的目标的名称。...我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表。

34120

Linux之ack命令

默认递归搜索子目录 忽略元数据目录,比如.svn,.git,CSV等目录 忽略二进制文件(比如pdf,image,coredumps)和备份文件(比如foo~,*.swp) 在搜索结果中打印行号,有助于找到目标代码...能搜索特定文件类型(比如Perl,C++,Makefile),该文件类型可以有多种文件后缀 高亮搜索结果 支持Perl的高级正则表达式,比grep所使用GNU正则表达式更有表现力。...在搜索过程中,ack维持着认可的文件类型的列表,同时跳过未知或不必要的文件类型。它同样避免检查多余的元数据目录。.../ --[no]make .mk; .mak; makefile; Makefile; Makefile.Debug; Makefile.Release --[no]matlab...xml/ --[no]yaml .yaml .yml 获取包含CFLAG关键字的Makefile的文件名 > ack --make CFLAG ack查找my.cnf文件 > ack

1.7K00

Linux之ack命令

默认递归搜索子目录 忽略元数据目录,比如.svn,.git,CSV等目录 忽略二进制文件(比如pdf,image,coredumps)和备份文件(比如foo~,*.swp) 在搜索结果中打印行号,有助于找到目标代码...能搜索特定文件类型(比如Perl,C++,Makefile),该文件类型可以有多种文件后缀 高亮搜索结果 支持Perl的高级正则表达式,比grep所使用GNU正则表达式更有表现力。...在搜索过程中,ack维持着认可的文件类型的列表,同时跳过未知或不必要的文件类型。它同样避免检查多余的元数据目录。.../ --[no]make .mk; .mak; makefile; Makefile; Makefile.Debug; Makefile.Release --[no]matlab...xml/ --[no]yaml .yaml .yml 获取包含CFLAG关键字的Makefile的文件名 > ack --make CFLAG ack查找my.cnf文件 >

1.2K20

Linux之ack命令

默认递归搜索子目录 忽略元数据目录,比如.svn,.git,CSV等目录 忽略二进制文件(比如pdf,image,coredumps)和备份文件(比如foo~,*.swp) 在搜索结果中打印行号,有助于找到目标代码...能搜索特定文件类型(比如Perl,C++,Makefile),该文件类型可以有多种文件后缀 高亮搜索结果 支持Perl的高级正则表达式,比grep所使用GNU正则表达式更有表现力。...在搜索过程中,ack维持着认可的文件类型的列表,同时跳过未知或不必要的文件类型。它同样避免检查多余的元数据目录。.../ --[no]make .mk; .mak; makefile; Makefile; Makefile.Debug; Makefile.Release --[no]matlab...xml/ --[no]yaml .yaml .yml 获取包含CFLAG关键字的Makefile的文件名 > ack --make CFLAG ack查找my.cnf文件 > ack

1.1K00

makefile

上述make的工作方式 make寻找名为makefile或者Makefile的文件 寻找第一个目标文件,上述例子edit为最终的目标文件 如果edit文件不存在,那么make会寻找edit后的.o文件,...如果edit依赖的.o文件仍然不存在,那make就寻找目标文件是.o文件的文件。...读入被include的其它Makefile。 初始化文件中的变量。 推导隐晦规则,并分析所有规则。 为所有的目标文件创建依赖关系链。 根据依赖关系,决定哪些目标要重新生成。 执行生成命令。...可以自动生成.c文件对于头文件的依赖性,如: cc -M main.c 等价于: main.o : main.c defs.h defs.h是main.c中包含的头文件 命令 @echo 正在编译xxx...如果echo前没有@,那么会显示echo 正在编译xxx模块,加上@后则不会显示echo 如果你希望上一条命令作用于下一条命令,那么两个命令应该在同一行且用分号分隔: cd /home/file;pwd

1.1K20

Golang深入浅出之-Go语言项目构建工具:Makefile与go build

解决:利用环境变量GOOS和GOARCH指定目标操作系统和架构。...GOOS=linux GOARCH=amd64 go build -o myapp-linux二、Makefile:定制化构建流程2.1 Makefile简介Makefile是一种基于规则的自动化构建工具...,允许开发者定义目标、依赖和构建命令。...解决:保持Makefile简洁,使用注释说明每条规则的目的。问题:跨平台编译配置不当。解决:在Makefile中定义变量,根据目标平台调整编译命令。BINARY=myappGOOS ?...实践中,不妨从简单的go build开始,随着项目复杂度的增加,逐步引入Makefile以实现更高级的构建自动化。我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

46510

【Linux修炼】6.gccg++及Makefile【工具篇】

Linux-gcc/g++及Makefile 本节目标 程序的翻译过程 1.程序的翻译过程 2. 理解选项的含义 3....进度条程序实现 本节目标 1. 了解gcc/g++的使用 2. 掌握makefile的原理 3....理解选项的含义 如果我们直接gcc test.c 就会跳过上述四个过程直接编译生成最终的a.out可执行文件,因此我们不直接这样,而是划分成四条指令依次执行上述的四步翻译过程,在此过程中理解选项的含义。...此外,对于新增的clean来说,也是有一定意义的,.PHONY:被改关键字修饰的对象是一个伪目标。...那如果我们将makefile进行如下的修改: 修改后: 发现其仍然是可以执行的。这就是所谓的伪目标总是被执行的含义。

49800
领券