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

指定输入源(而不是中间件)作为Makefile中目标的先决条件

在Makefile中,指定输入源作为目标的先决条件是为了确保在构建目标之前,输入源已经存在或已经被生成。这样可以确保构建过程的正确性和可靠性。

在Makefile中,可以使用以下方式指定输入源作为目标的先决条件:

  1. 使用文件依赖关系:在Makefile中使用依赖关系来指定输入源作为目标的先决条件。例如,如果目标是output,输入源是input.txt,则可以使用以下语法:
代码语言:txt
复制

output: input.txt

代码语言:txt
复制
   <command>
代码语言:txt
复制

这样,在构建output目标之前,Make会检查input.txt是否存在或已经被生成。

  1. 使用伪目标:如果输入源不是一个实际的文件,而是一个伪目标(例如,一个命令或一个动作),可以使用伪目标来指定输入源作为目标的先决条件。例如,如果目标是output,输入源是一个命令generate_input,则可以使用以下语法:
代码语言:txt
复制

output: generate_input

代码语言:txt
复制
   <command>
代码语言:txt
复制

这样,在构建output目标之前,Make会执行generate_input命令来生成输入源。

指定输入源作为目标的先决条件可以确保在构建目标时,所需的输入源已经准备好。这在软件开发中特别有用,因为它可以确保构建过程的正确性和可靠性,避免因为缺少输入源而导致构建失败或生成错误的结果。

腾讯云相关产品和产品介绍链接地址:

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

相关·内容

Makefile基本用法

也可用FORCE替换.PHONY,效果一致,FORCE可以换一个名字,只是一个标记。 ? 使用默认编译再次简化 虽然更紧凑,但是每个目标的所依赖的信息放在不同的地方,可能不够清晰。 ?...当一个先决条件的名称的格式为'-lname'时,make通过搜索文件来专门处理它libname.so文件 如果找不到,则在当前目录的libname.a文件 在通过匹配vpath搜索路径和vpath搜索路径指定的目录...$*匹配%.d的%表示的部分,然后外部添加括号和.o,并添加数个空格和冒号,作为替换的。该正则表达式分为三部分,以括号为第一部分,.o为第二部分,[ :]*为第三部分。...在替换的目标,\1表示替换的的第一部分,然后添加.o和空格和该规则下的先决条件名。 sed将上一句生成的依赖关系的一些部分进行了替换,写入到了每个先决条件文件下。...换行说明 转义符换行,左边为输入,右边为输出。其中第二部分的单双引号区别由bash控制不是makefile。 ? 。。。。 ? ? 。。。。 ? ? 。。。。 ?

2.5K40

可移植的 Makefile 教程

Makefile 指定了依赖树的内容,并且提供了 Shell 命令来从目标的 先决条件(prerequisite) 生成目标。 ?...dependency tree 在上面的图示,“.c” 结尾的文件是事先写好的源文件,不是由命令生成的文件,所以它们没有先决条件。...一个目标可以被指定多次。任何新的先决条件,都会被附加到已有的先决条件。...习惯上,使用伪目标 all 作为默认目标。 我会用 game 作为新的 all 目标的一个先决条件。更多实际目标,可以作为必要条件加入到默认目标。...举个例子,下面是在源文件之外的构建,它一个调用 gcc 的依赖生成器的例子,不是虚构的 input.c : $ gcc $CFLAGS -MM -MT '$(BUILD)/input.o' input.c

1.3K10

探索Linux内核:Kconfig的秘密

此外,由于它是内部使用(不是为用户),它被从列表删除。 下面是一个例子syncconfig作用: ?...syncconfig接受.config作为输入并输出许多其他文件,这些文件分为三类: auto.conf & tristate.conf用于生成文件文本处理。...KBuild指的是不同类型的makefileMakefile位于的顶部makefile。 .config是内核配置文件。...depfile命令行作为输入,然后以makefile语法输出.cmd文件,它记录目标的命令行和所有先决条件(包括配置)。...这背后的秘密是,Fixdep将解析depfile(.d文件),然后解析其中的所有依赖文件,搜索所有config_string的文本,将它们转换为相应的空头文件,并将它们添加到目标的先决条件

1.7K11

Make 快速入门

prerequisites: 先决条件是用于生成 target 文件的输入文件或是完成 target 任务前需要先执行的任务 。一个 target 可以没有先决条件,也可以有一个或多个先决条件。...值得注意的是,recipe 默认以制表符开头,不是空格。 2.2 运行 make 在当前目录下创建一个 Makefile 文件, 命名为 Makefile 。...将以下内容复制到新建的 Makefile 文件。 注意: recipe 默认是以制表符开头,不是空格。如果复制到文件是空格,需要手动将空格改成制表符,即按键盘 tab 键。...作为默认目标 。...既可以出现在目标,先决条件,也可以出现在“菜谱”的 shell 命令;可以是命令本身,也可以是命令的选项,或者输入输出文件;甚至也可以出现在另一个变量的引用(计算变量)。

1.5K10

命令行上的数据科学第二版:六、项目管理与`make`

如果你不指定一个目标的名字,那么make将构建第一个在Makefile指定的目标。...以上摘自我写这本书时使用的Makefile。你可以说我把make作为一个荣耀的任务运行者。虽然这不是make的主要目的,但它仍然提供了很多价值,因为我不需要记住或查找我使用了什么咒语。...相反,我输入make publish,这本书的最新版本就出版了。将长时间运行的命令放在一个Makefile是非常好的。 并且可以为我们做更多的事情!...这就像是按指定顺序执行一个或多个目标的快捷方式。在这种情况下:top10``heights.png。目标all作为第一个目标出现在Makefile,这意味着如果我们运行make,这个目标将被构建。...在这一章,我已经向您展示了仅仅将每个命令放在一个 Bash 脚本不是最理想的。相反,我建议使用make作为命令行工具来管理您的数据工作流。

66810

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

它建议您使用Makefile,因为GNUmakefile是针对GNU特定的命令,makefile并不突出。 Makefile是特定于目录的,这意味着make将在调用它的目录搜索以查找这些文件。...调用make时,我们可以通过输入以下内容来指定target: make target_name 然后,Make将检查Makefile并执行与该target关联的命令。...附加功能 一些其他功能可以帮助您在Makefile创建更复杂的规则链。 变量 Make识别变量(或宏),它在makefile作为替换的简单占位符。最好在文件顶部声明这些内容。...这些图像文件通常使用.jpeg扩展名不是.jpg。...为了指定这一点,我们将把它作为第一个可用的目标。这将用作默认值。

2.3K00

Linux:常用软件、工具和周边知识介绍

|:管道符号,将 yum list 的输出作为 grep 命令的输入。 grep vim:使用 grep 工具搜索包含 “vim” 关键字的行。...特点: 动态库的代码不会被复制到可执行文件,而是在程序运行时由动态链接器加载到内存。 可执行文件相对较小,因为它只包含了链接到动态库的信息,不是实际的库代码。...test_make 在Makefile,依赖关系表示目标文件依赖于哪些其他文件,依赖方法表示如何生成目标文件 依赖关系: 在Makefile,每个目标文件都有一组依赖关系,这些依赖关系指示了生成目标文件所需的其他文件或操作...依赖关系通常是源文件或其他目标文件,它们是构建目标文件的输入先决条件。 如果任何一个依赖关系发生了变化(例如,文件已被修改),则目标文件将被重新生成。...如果找到了 Makefile 文件,make 将会查找文件的第一个目标(target),并把它作为最终的目标文件。

18510

make与makefile

首先:先向大家说明,make是一个命令行的命令,makefile则是一个文件名称,make这个命令是用来执行makefile这个文件的 makefile: 1.mekefile编译过程: Makefile...5、all:Makefile文件默认只生成第一个目标文件即完成编译,但是我们可以通过all 指定所需要生成的目标文件。例如下面的例子。...因此,通过在Makefile设置all作为默认目标规则,你可以简化构建过程,只需运行make命令即可执行整个编译过程,无需显式指定目标。...伪目标的存在告诉 Make 工具该目标不是用于生成文件,而是执行相应的操作。 组织和管理构建任务:伪目标可以用来组织和管理构建流程的各个任务或操作。...假如我们在系统的某一个目录下,创建一份名为hello.cc的文件,那么我们就在同一个目录下创建一个依赖对象为hello.cc的makefile即可,当我们进入目录后,在命令行输入make,系统就会在这一目录下查找是否存在

6410

Linux 下的make命令与Makefile

make命令的运行 make最简单的用法就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。...或者make targetfile ,但也有时你也许只想让make重编译某些文件,不是整个工程,而又有的时候你有几套编译规则,想在不同的时候使用不同的编译规则,等等,本章节就是讲述如何使用make命令的使用...sources = foo.c bar.c ifneq ( $(MAKECMDGOALS),clean) include $(sources:.c=.d) endif 基于上面的这个例子,只要我们输入的命令不是...-C , –directory= 指定读取makefile的目录。如果有多个“-C”参数,make的解释是后面的路径以前面的作为相对路径,并以最后的目录作为指定目录。...下面是对于上面的七个变量分别加上D 或是F 的含义: (@D) 表示@ 的目录部分(不以斜杠作为结尾),如果@ 值是dir/foo.o ,那么(@D)就是dir,如果@没有包含斜杠的话,其值就是.

10.1K20

Make

执行make命令需要一个Makefile文件,来定义整个项目的编译规则。makefile定义了模块间的依赖关系,指定文件的编译顺序,以及编译所使用的命令。...文件指示:包括三个部分,一个类似于c语言中的include语句,可以将另一个makefile文件包含进来;二是根据情况指定makefile的有效部分,就像c语言中的预编译#if一样;三是定义一个多行的命令...$@:表示一个规则的目标文件名。 $%:当规则的目标文件是一个静态库文件时,$%就代表静态库的一个成员名。如果目标不是静态库文件,则该变量 值为空。...,需要加入库的文件作为依赖文件。...-f filename或者--file=FILE或者--makefile=FILE:使用指定文件作为makefile文件。

1.9K100

日常记录(6)Verilog

reg类型的变量则作为无符号数使用。...set -e,这句语句告诉bash如果任何语句的执行结果不是true则应该退出,不是继续向下执行。rm -rf $@表示删除生成的目标文件。...写到这里不是开头的原因在于,开头写的规则为默认规则,写到开头会覆盖默认规则。 -M显示完整的c文件对头文件依赖关系,一般使用-MM显示不包含系统头文件的部分即可。...然后外部添加括号和.o,并添加数个空格和冒号,作为替换的。该正则表达式分为三部分,以括号为第一部分,.o为第二部分,[ :]*为第三部分。...在替换的目标,\1表示替换的的第一部分,然后添加.o和空格和该规则下的先决条件名。替换的结果存储在目标文件。sed将上一句生成的依赖关系的一些部分进行了替换,写入到了每个先决条件文件下。

49630

Linux makefile 教程 非常详细,且易懂

这样比较便于Makefile的易读。我们可以把这个内容保存在文件为“Makefile”或“makefile”的文件,然后在该目录下直接输入命令“make”就可以生成执行文件edit。...但是,我们也可以为伪目标指定所依赖的文件。伪目标同样可以作为“默认目标”,只要将其放在第一个。...如果一个规则是以“.IGNORE”作为标的,那么这个规则的所有命令将会忽略错误。这些是不同级别的防止命令出错的方法,你可以根据你的不同喜欢设置。...“-C ” “–directory=” 指定读取makefile的目录。如果有多个“-C”参数,make的解释是后面的路径以前面的作为相对路径,并以最后的目录作为指定目录。...你可以以如下格式指定函数库文件及其组成: archive(member) 这个不是一个命令,一个目标和依赖的定义。一般来说,这种用法基本上就是为了”ar”命令来服务的。

4.3K20

Makefile经典教程(掌握这些足够)

这样比较便于Makefile的易读。我们可以把这个内容保存在文件为“Makefile”或“makefile”的文件,然后在该目录下直接输入命令“make”就可以生成执行文件edit。...如果一个规则是以“.IGNORE”作为标的,那么这个规则的所有命令将会忽略错误。这些是不同级别的防止命令出错的方法,你可以根据你的不同喜欢设置。...“-C ” “--directory=” 指定读取makefile的目录。如果有多个“-C”参数,make的解释是后面的路径以前面的作为相对路径,并以最后的目录作为指定目录。...(建议使用“.cc”作为C++源文件的后缀, 不是“.C”) 3、编译Pascal程序的隐含规则。...你可以以如下格式指定函数库文件及其组成: archive(member) 这个不是一个命令,一个目标和依赖的定义。一般来说,这种用法基本上就是为了"ar"命令来服务的。

2.6K20

全网最牛Linux内核Makefile系统文件详解(纯文字代码)

这样比较便于Makefile的易读。我们可以把这个内容保存在文件为“Makefile”或“makefile”的文件,然后在该目录下直接输入命令“make”就可以生成执行文件edit。...但是,我们也可以为伪目标指定所依赖的文件。伪目标同样可以作为“默认目标”,只要将其放在第一个。...的第一个目标会被作为其默认目标。...GNU组织建议把编译器为每一个 文件的自动生成的依赖关系放到一个文件,为每一个“name.c”的文件都生成一个“name.d”的Makefile文件,[.d]文件中就存放对应[.c]文件的依赖关系。...如果一个规则是以“.IGNORE”作为标的,那么这个规则的所有命令将会忽略错误。这些是不同级别的防止命令出错的方法,你可以根据你的不同喜欢设置。

3.1K20

make menuconfig执行流程分析

如果你的makefile的第一个目标是由许多个目标组成,你可以指示make,让其完成你所指定的目标。要达到这一目的很简单,需在make命令后直接跟目标的名字就可以完成(如make clean)。...FORCE被定义为一个伪目标,所以它作为依赖时总是被认为是最新的(比目标新),故有FORCE作为依赖的目标每次make时必然会重新生成,在这里FORCE伪目标的规则命令为空,故FORCE在Kbuild体系...always在scripts/kconfig/Makefile定义为dochecklxdialog,dochecklxdialog目标所在规则的注释写着# Check that we have the...如果你的makefile的第一个目标是由许多个目标组成,你可以指示make,让其完成你所指定的目标。要达到这一目的很简单,需在make命令后直接跟目标的名字就可以完成(如make clean)。...FORCE被定义为一个伪目标,所以它作为依赖时总是被认为是最新的(比目标新),故有FORCE作为依赖的目标每次make时必然会重新生成,在这里FORCE伪目标的规则命令为空,故FORCE在Kbuild体系

3.4K10

Makefile的伪目标

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

1.3K70
领券