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

包含子目录的Makefile,模式规则仅适用于第一个依赖项

Makefile是一种用于管理和自动化软件构建过程的工具。它通常用于编译源代码、链接库文件和生成可执行文件。Makefile中的模式规则是一种用于匹配多个文件的规则,它可以根据文件名的模式来执行相应的操作。

对于包含子目录的Makefile,可以使用以下方法来处理:

  1. 子目录的规则:在Makefile中,可以使用相对路径或变量来指定子目录的规则。可以为每个子目录创建一个独立的规则,以便在构建过程中进入子目录并执行相应的操作。
  2. 递归调用:可以使用递归调用的方式来处理包含子目录的Makefile。在Makefile中,可以使用make命令来调用子目录中的Makefile,并在子目录中执行相应的操作。这样可以实现对整个项目的递归构建。
  3. 使用通配符:可以使用通配符来匹配子目录中的文件,并在Makefile中使用模式规则来处理这些文件。通过使用通配符,可以简化Makefile的编写,并自动处理子目录中的文件。

对于模式规则仅适用于第一个依赖项的情况,可以通过在规则中使用变量来实现。可以将第一个依赖项的名称保存在一个变量中,并在规则中引用该变量。这样可以确保模式规则只适用于第一个依赖项。

对于腾讯云相关产品和产品介绍链接地址,可以参考腾讯云官方文档或官方网站获取最新信息。

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

相关·内容

qmake:变量手册

默认情况下,androiddeployqt 将检测应用程序依赖。 但是,由于无法检测到插件运行时使用情况,因此可能会出现误报,因为应用程序可能依赖于任何潜在依赖插件。...146、QMAKE_RPATHLINKDIR 指定静态链接器库路径列表以搜索共享库隐式依赖。 147、QMAKE_RUN_CC 指定构建对象所需单个规则。...但是,doc 可以与其他子目录并行构建,从而加快构建过程。 注意:可以列出多个依赖,它们都将在依赖它们目标之前构建。...注意:此模板类型适用于基于 Makefile 生成器。 特别是,它不适用于 vcxproj 和 Xcode 生成器。 vcapp:仅限 Windows。...203、YACCSOURCES 指定要包含在项目中 Yacc 源文件列表。 所有依赖、头文件和源文件都将自动包含在项目中。

3.5K20

Makefile教程

3.Makefile内容 Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。 1.显式规则。显式规则说明了,如何生成一个或多个目标文件。...如果target已存在,则检测target依赖是否是最新,若被修改,则重新生成target; (4)如果依赖(比如目标文件)是根据其它依赖生成,那么按照步骤3来检测生成依赖。...(1)Makefile中内置变量 $@、$^、$<、$? 。 $@ 表示目标文件,$^ 表示所有的依赖文件,$< 表示第一个依赖文件,$? 表示比目标还要新依赖文件列表。...大家也可以举一反三,给出自己Makefile模板。 7.相关知识点 7.1Makefile中目标文件一定要把依赖头文件包含进去吗? 不一定,可以不包含进去。...我们原则是,自己定义头文件写入依赖,库头文件无需包含,除非你要修改库头文件。

3.9K53

qmake:高级用法

depends:自定义构建目标所依赖现有构建目标。 recurse:指定在 Makefile 中创建规则以调用子目标特定 Makefile 时应使用哪些子目标。...recurse_target:指定应通过子目标 MakefileMakefile规则构建目标。 target:自定义构建目标的名称。...例如,在静态链接库时,不会链接其他库,因此不会创建对这些库依赖。如果明确启用跟踪,qmake 会在适当情况下尝试跟踪库依赖。 第一步是在库本身中启用依赖跟踪。...必须告诉 qmake 保存有关库信息: CONFIG += create_prl 这适用于 lib 模板类型工程,所有其他模板将被忽略。....prl 文件应由 qmake 创建,不应在操作系统之间传输,因为它们可能包含平台相关信息。

1.8K10

Makefile学习1

Makefile内容 简单概括一下Makefile内容,它主要包含有五个部分,分别是: 1) 显式规则 显式规则说明了,如何生成一个或多目标文件。...规则中也可以没有命令,仅仅包含目标和目标依赖,仅仅用来描述一种依赖关系,但一个规则中一定要有一个目标。 默认目标 一个Makefile文件里通常会有多个目标,一般会选择第一个作为默认目标。...这种变量一般称为自动变量,自动变量是局部变量,作用域范围在当前规则内,它们分别代表不同含义: $@:目标 $^:所有目标依赖 $<:目标依赖列表中第一个依赖 $?...时可能会遇到,比如: $%:当规则目标是一个静态库文件时,$%代表静态库一个成员名 $+:类似$^,但是保留了依赖文件中重复出现文件 $*:在模式匹配和静态模式规则中,代表目标模式中%部分。...,解析各个子目录Makefile并运行,遍历完所有的子目录 make依次遍历到各个子目录下解析新Makefile时,项目顶层目录Makefile定义一些变量,如何传递到子目录Makefile

32010

Linux工具入门:make工具与Makefile文件

make工具通过一个称为Makefile文件来完成并自动维护编译工作,Makefile文件描述了整个工程编译、连接规则。 回到顶部 2....Makefile文件 Makefile描述了整个工程编译连接规则Makefile基本规则为: TARGET...: DEPENDENCIES... COMMAND ......Makefile简单示例 $ touch add.c add.h sub.c sub.h main.c 现在有这5个文件add.h 、sub.h中包含了函数声明,add.c、sub.c中包含了函数实现...选项名 作用 $@ 规则目标文件名 $< 规则第一个依赖文件名 $^ 规则所有依赖文件列表 刚才Makefile文件,我们可以改写为: main:main.o add.o sub.o...) 【main生成依赖与当前目录及所有子目录.o文件】 $(CC) $(CFLAGS) -o $(BIN) $(ROOTOBJ) $(SUBOBJ) .o .c:

3K40

Linux工具入门:make工具与Makefile文件

make工具通过一个称为Makefile文件来完成并自动维护编译工作,Makefile文件描述了整个工程编译、连接规则。 2. Makefile文件 Makefile描述了整个工程编译连接规则。...Makefile基本规则为: TARGET...: DEPENDENCIES... COMMAND ......Makefile简单示例 $ touch add.c add.h sub.c sub.h main.c 现在有这5个文件add.h 、sub.h中包含了函数声明,add.c、sub.c中包含了函数实现...选项名 作用 $@ 规则目标文件名 $< 规则第一个依赖文件名 $^ 规则所有依赖文件列表 刚才Makefile文件,我们可以改写为: main:main.o add.o sub.o...) 【main生成依赖与当前目录及所有子目录.o文件】 $(CC) $(CFLAGS) -o $(BIN) $(ROOTOBJ) $(SUBOBJ) .o .c:

3.4K40

可移植 Makefile 教程

本指南不仅适用于之前从来没有写过 Makefile make 初学者,同样适用于想要学习如何写出可移植 Makefile 资深开发者。...所有特殊目标都有大写名字,并且开始于一个周期。符合这个模式名字被 make 保留使用。根据标准,为了获得可靠 POSIX 行为,Makefile 第一个非注释行必须是 .POSIX....对于包含头文件源文件,在依赖树也应该有指向源文件边。如果头文件改变了,那么包含目标也应该被重新构建。...Recursive Makefiles 当你项目被分为几个子目录,你可能会试图在每个子目录下放一个 Makefile ,然后递归调用。 不要使用递归 Makefile。...你可能需要告诉你编辑器如何做到这一点。 当涉及子目录文件时,在名字中包含子目录即可。所有 make 关心内容都会跟之前一样正常工作,包括推断规则

1.3K10

qmake手册(Qt5.9.3)

aux Makefile没有任何东西。如果不需要调用编译器来创建目标,请使用此方法,例如因为您项目是使用解释型语言编写。注意:此模板类型适用于基于Makefile生成器。...subdirs 包含使用SUBDIRS变量指定子目录规则Makefile。每个子目录都必须包含自己项目文件。 vcapp Visual Studio项目文件来构建一个应用程序。...Makefile模式选项部分描述了适用于生成文件模式选项,而项目模式选项部分则介绍了影响项目文件创建选项。 文件 files参数表示一个或多个项目文件列表,以空格分隔。...windows 目标是一个Win32窗口应用程序(适用于应用程序)。合适包含路径,编译器标志和库将自动添加到项目中。 console 目标是一个Win32控制台应用程序(适用于应用程序)。...如果提供了指定尺寸描述,则一般描述将被覆盖。 YACCSOURCES 指定要包含在项目中Yacc源文件列表。 所有的依赖,头文件和源文件将自动包含在项目中。

5.3K20

makefile终极奥义

这就是整个make依赖性,make会一层又一层地去找文件依赖关系,直到最终编译出第一个目标文件。...会自动推导生成.o文件 除了通配符,makefile还提供了自动推导自动变量 自动变量 符号 含义 $@ 代表目标文件 $^ 代表所有依赖文件 $< 代表第一个依赖文件 由此第二个版本出来了 第二个版本...-name "*.c") 将当前目录及其子目录下所有文件后缀为 「.c」 文件以空格为限赋值给 SRC 最终版本 先总结一下前面都讲了些什么 Makefile里主要包含了五个东西:「显式规则」、「...显式规则。显式规则说明了如何生成一个或多个目标文件。这是由Makefile书写者明显指出要生成文件、文件依赖文件和生成命令。 隐晦规则。...各级子目录Makefile 「各级子目录Makefile」 这个是最简单,只需要obj-y+=将所有.o文件或者子级目录添加即可,例如 sub文件夹下 makefile obj-y += sub.o

1.3K30

Hello Qt——QMake用户指南

下列时可用工程类型: app:创建一个构建应用程序MakeFile lib:创建一个构建库MakeFile subdirs:创建一个包含使用SUBDIRS变量指定子目录规则MakeFile,每个子目录必须包含自己工程文件...qmake生成MakeFile文件会包含两种版本构建规则,使用下列方式进行调用: make all 增加build_all选项到CONFIG变量会生成构建工程默认规则,并且创建debug和release...例如,如果想要在某个平台包含某个特定文件,且在调试开启时处理。...此时,qmake会生成包含构建两种版本规则MakeFiles,使用make all可以调用。 当链接库时,qmake依赖于底层平台来了解库中链接其它库。...CONFIG:为自定义编译器指定配置选项 depend_command:指定用于生成输出依赖列表命令。

5.2K20

eBPF动手实践系列三:基于原生libbpf库eBPF编程改进方案

此外,网络上也偶见比较古老依赖一个bpf_load.c文件C语言编程方案,这个方案并不需要依赖libbpf库支持。...如果不依赖libbpf-bootstrap编程框架,继续依赖 libbpf 库是否可以做到这一点呢?...libbpf-bootstrap编程框架非常成熟,但方案使用中必须遵循他一些规则,比如头文件trace_execve.skel.h命令必须包含程序关键词trace_execve,再比如加载函数trace_execve_bpf...源码,为了实现以上目标依赖,我们连用了5个静态模式规则(Static Pattern Rules)。...bpf.o $(SKEL_OBJECT):%.skel.h:%.hex $(USER_OBJECT):%.o:%.c %.skel.h $(LOADER_OBJECT): %:%.o 其中任何一个静态模式规则目标集合

18710

Makefile 使用

要想完整地了解 Makefile 规则,请参考《GNU Make 使用手册》,以下粗略介绍。...在 Makefile.build 中设置编译规则,有 3 条编译规则: i. 怎么编译子目录?...3.2 Makefile 规则 一个简单 Makefile 文件包含一系列规则”,其样式如下: 目标(target)…: 依赖(prerequiries)… 命令(command) 目标...注意:每个命令行前面必须是一个 Tab 字符,即命令行第一个字符是 Tab。这是容易出错地方。 通常,如果一个依赖发生了变化,就需要规则调用命令以更新或创建目标。...当然,一个规则也可以是用于解释怎样和何时执行一个动作,即打印提示信息。 一个 Makefile 文件可以包含规则以外其他文本,但一个简单 Makefile 文件仅仅需要包含规则

4.3K42

Makefile 使用(在 Linux 中使用 make 命令来编译程序)

要想完整地了解 Makefile 规则,请参考《GNU Make 使用手册》,以下粗略介绍。...在 Makefile.build 中设置编译规则,有 3 条编译规则: i. 怎么编译子目录?...3.2 Makefile 规则 一个简单 Makefile 文件包含一系列规则”,其样式如下: 目标(target)…: 依赖(prerequiries)… 命令(command) 目标...当然,一个规则也可以是用于解释怎样和何时执行一个动作,即打印提示信息。 一个 Makefile 文件可以包含规则以外其他文本,但一个简单 Makefile 文件仅仅需要包含规则。...@表示规则目标文件名; ^表示所有依赖名字,名字之间用空格隔开; <表示第一个依赖文件名。‘%’是通配符,它和一个字符串中任意个数字符相匹配。

8.6K10

Linux 开发 | 学习 Makefile

读入被 include 其他 Makefile,在对应位置展开 初始化变量 推导隐式规则;分析所有规则,创建依赖关系链,决定哪些需要【重新】生成,执行命令。 从第一个 target(排除以 ....Makefile第一个规则第一个目标, 设置为要完成最终目标。...静态模式 对应多个目标对象,构建每个对象对应名称依赖关系规则。...,Make 才会重新执行依赖关系。但是对于一个文件包含什么头文件,对应修改 Makefile,这样是很难维护。 C/C++ 编译器 -MM 功能可以自动找寻文件包含 ,生成依赖关系。...例如,子目录 subdir 下有一个 Makefile 描述该目录模块编译规则, 那么总控 Makefile 中调用子目录 Makefile 可以这么写: subsystem : cd subdir

5.3K10

翻译qmake文档(三) Creating Project Files

例如你项目是用解释型语言编写。 注意:这个模板类型只适用于基于Makefile生成器。特别是,它不会与vcxproj和Xcode生成器一起工作。...subdirs Makefile规则包含使用SUBDIRS变量指定子文件。每一个子目录必须包含它自己项目文件。...当使用subdirs模板时,qmake生成一个makefile用来检查每一个子目录,处理在子目录里找到工程文件,并执行平台make 工具生成新Makefile。...SUBDIRS变量被用于包含所有要被处理子目录列表。 常规配置 CONFIG变量指定项目应该配置选项和功能。      可以在release模式或debug模式或两种模式一起构建项目。...如果你指定 debug_and_release 选项用来构建项目的debug和release两个版本,qmake会生成包含构建两个版本规则Makefile

91460

makefile

前言 这几天实验让我觉得有必要学习一下makefile 参考博客:博客 会不会写makefile,从一个侧面说明了一个人是否具有完成大型工程能力 makefile带来好处是自动化编译 规则...上述make工作方式 make寻找名为makefile或者Makefile文件 寻找第一个目标文件,上述例子edit为最终目标文件 如果edit文件不存在,那么make会寻找edit后.o文件,...makefile包含其他makefile指令如同c++ 一样: -include foo.make a.mk b.mk c.mk e.mk f.mk 减号仍然表示不管怎样报错都继续执行下去,上面的命令可以采用部分正则规则简化...读入被include其它Makefile。 初始化文件中变量。 推导隐晦规则,并分析所有规则。 为所有的目标文件创建依赖关系链。 根据依赖关系,决定哪些目标要重新生成。 执行生成命令。...vpath # 清除符合模式文件搜索目录vpath# 清除所有已被设置好文件搜索目录 pattern需要包含%,表示匹配0/若干字符,例如: vpath %.h ..

1K20

图解嵌入式系统开发之Makefile

我们可以把导出依赖关系保存成一个文件,然后在下次编译时候使用Makefileinclude功能包含该文件。这样就可以自实现只编译被修改文件梦想了。。。。?...主Makefile: 主Makefile一般在源码根目录下, 是执行Make命令读取第一个Makefile文件,该文件中定义了最终产物名字,源文件子目录,启动递归编译,合成最终产物规则,clean...,提供了具体代码编译规则,递归编译控制,依赖文件生成规则,递归Clean规则等等。...如下: obj-y := main.o obj-y += cmd/ Makefile.build递归到该目录时候首先包含了该目录下Makefile文件,然后读取obj-y值,读到obj-y中 main.o...所以这是一个不断递归过程,进入到一个目录下,通过当前目录下Makefile判断是否有子目录,如果有子目录,就按照同样方式先进入到子目录下去处理。

1.2K40
领券