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

如何从具有不同目标的顶层Makefile调用一组子目录Makefile

在软件开发中,Makefile是一种用于自动化构建和管理项目的工具。它通常包含了一组规则,用于描述文件之间的依赖关系和构建步骤。当项目较大时,可以将Makefile分为多个子目录Makefile,以便更好地组织和管理代码。

要从具有不同目标的顶层Makefile调用一组子目录Makefile,可以使用以下步骤:

  1. 在顶层Makefile中定义子目录列表:首先,需要在顶层Makefile中定义一个变量,用于存储子目录列表。例如,可以使用SUBDIRS变量来存储子目录的名称。
  2. 在顶层Makefile中定义子目录列表:首先,需要在顶层Makefile中定义一个变量,用于存储子目录列表。例如,可以使用SUBDIRS变量来存储子目录的名称。
  3. 定义顶层Makefile的目标规则:接下来,需要定义顶层Makefile的目标规则,以便调用子目录Makefile。可以使用循环结构来遍历子目录列表,并调用子目录Makefile中的目标。
  4. 定义顶层Makefile的目标规则:接下来,需要定义顶层Makefile的目标规则,以便调用子目录Makefile。可以使用循环结构来遍历子目录列表,并调用子目录Makefile中的目标。
  5. 在上述示例中,all是顶层Makefile的目标规则,它会依次调用每个子目录的Makefile。
  6. 在子目录中创建Makefile:在每个子目录中,需要创建一个独立的Makefile,用于定义该子目录的构建规则和目标。
  7. 在子目录中创建Makefile:在每个子目录中,需要创建一个独立的Makefile,用于定义该子目录的构建规则和目标。
  8. 在上述示例中,allclean是子目录Makefile的目标规则,可以根据需要定义具体的构建和清理规则。

通过以上步骤,可以实现从具有不同目标的顶层Makefile调用一组子目录Makefile。在构建过程中,顶层Makefile会依次调用每个子目录的Makefile,从而完成整个项目的构建。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,无法提供相关链接。但是,腾讯云提供了丰富的云计算服务和解决方案,可以根据具体需求在腾讯云官方网站上查找相关产品和文档。

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

相关·内容

通用Makefile的使用及解析

四、怎么使用这套 Makefile: 1.把顶层 Makefile, Makefile.build 放入程序的顶层目录 在各自子目录创建一个空白的 Makefile 2.确定编译哪些源文件.../Makefile_and_readme/说明.txt 讲解一下如何给 example 添加 Makefile 步骤如下: ①、将 Makefile_and_readme 目录下的 Makefile.../example/ ②、在 example 子目录 a 中创建一个空白的 Makefile touch Makefile ③、确定要编译哪些源文件,按照需求修改 Makefile 、编译顶层目录的.../general_Makefile/example 因此,这样顶层目录的 Makefile 一路往下查看,你要编译 main.o sub.o 还有 a 目录下的文件,再从 a 目录下的 Makefile...进入子目录编译: $(subdir-y): make -C $@ -f $(TOPDIR)/Makefile.build # 进入子目录并使用顶层目录里面的 Makefile.build 来编译这个子目录

47220

Makefile学习1

很多开源项目可能文档不完整,而Makefile就是开源项目的地图,Makefile入手,可以让你快速窥探整个开源项目的框架和概貌,让你深入代码而不至于迷路。...文件时,会将具有相同目标的规则的依赖文件合并。...另一个角度上看,就是实现了在Makefile中增加或者修改命令行参数的一种机制。...递归执行 在实际工程项目中,各个源文件通常存放在各个不同的目录中,make在编译工程项目时,会依次遍历各个不同子目录,编译每个子目录下的源文件。...,解析各个子目录下的Makefile并运行,遍历完所有的子目录 make依次遍历到各个子目录下解析新的Makefile时,项目顶层目录的主Makefile定义的一些变量,如何传递到子目录Makefile

34810

05.内核启动流程分析之makefile

linux内核makefile文件分类 名称 描述 顶层makefile 它是所有makefile文件的核心,从总体上控制着内核的编译、连接 .config 配置文件,在配置内核时生成。...所有makefile文件(包括顶层目录及各级子目录)都是根据.config来决定使用那些文件 arch/$(ARCH)/Makefile 对于体系结构的makefile,它用来决定那些体系结构相关的文件参与内核的生成...,并提供一些规则来生成特定格式的内核映像 scripts/Makefile.* Makefile共用的通用规则、脚本等 kbuild Makefiles 各级子目录下的Makefile,它们相对简单,被上一层...Makefile调用来编译当前目录下的文件   分析makefile顶层开始,顺藤摸瓜的分析下去,会涉及到所有的makefile文件。...各级子目下的makefile完成的动作obj -y += obj -m +=   make uImage时,uImage在arch/arm/makefile中,顶层makefile中一定包含了底层的makefile

70610

Makefile 入门教程

Makefile 语法 一个基本的 Makefile 规则的语法如下: target: dependencies command target:要生成的目标的名称。...dependencies:生成目标所需的文件或其他目标的列表。 command:生成目标的命令,必须以 Tab 键开头。 3....以下是一些高级用法的详细介绍: 5.1 条件语句和函数 条件语句 Makefile 支持条件语句,可以根据条件来执行不同的规则或命令。通常使用 ifeq 和 ifdef 这两个条件语句。...$(notdir names):文件路径中提取文件名。 这些函数可以在 Makefile 中用于各种目的,例如文件操作、文本处理和条件判断。...5.3 多目录项目 对于大型项目,通常需要将 Makefile 拆分成多个子目录,每个子目录都有自己的 Makefile。然后,可以使用递归或变量传递来管理这些子目录之间的依赖关系。

39620

Makefile 入门教程

Makefile 语法 一个基本的 Makefile 规则的语法如下: target: dependencies command •target:要生成的目标的名称。...•dependencies:生成目标所需的文件或其他目标的列表。•command:生成目标的命令,必须以 Tab 键开头。 3....以下是一些高级用法的详细介绍: 5.1 条件语句和函数 条件语句 Makefile 支持条件语句,可以根据条件来执行不同的规则或命令。通常使用 ifeq 和 ifdef 这两个条件语句。...•(notdir names):文件路径中提取文件名。 这些函数可以在 Makefile 中用于各种目的,例如文件操作、文本处理和条件判断。...5.3 多目录项目 对于大型项目,通常需要将 Makefile 拆分成多个子目录,每个子目录都有自己的 Makefile。然后,可以使用递归或变量传递来管理这些子目录之间的依赖关系。

23820

makefile终极奥义

那就要说说 make 是如何工作的 make是如何工作的 在默认的方式下,也就是我们只输入 make 命令。那么, make会在当前目录下找名字叫“Makefile”或“makefile”的文件。...函数 在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。...└── mult.c └── sub ├── Makefile └── sub.c 示例程序的Makefile分为3类: 顶层目录的Makefile 顶层目录的Makefile.build...各级子目录Makefile 「各级子目录Makefile」 这个是最简单的,只需要obj-y+=将所有.o文件或者子级目录添加即可,例如 sub文件夹下的 makefile obj-y += sub.o...「顶层目录的Makefile」 它除了定义obj-y来指定根目录下要编进程序去的文件、子目录外,主要是定义工具链、编译参数 CFLAGS = -g #编译器参数 CFLAGS += -

1.3K30

Go项目目录结构应该这么用!

前言想必大家都有一种感觉,作为Go开发者好像遇到的每一个项目都是特别不同的目录结构,先不说大体相似吧,基本都是风格不同,让初学者不好构建自己的项目目录规范结构。那么Go官方有标准的目录结构吗?...这不是核心Go开发团队定义的官方标准;然而,这是Go生态系统中一组常见的历史和新兴项目布局模式。其中一些图案比其他图案更受欢迎。...它还具有一些小的增强功能,以及任何足够大的现实世界应用程序通用的几个支持目录。...Makefile 由多条规则组成,每条规则都以一个 target(目标)开头,后跟一个 : 冒号,冒号后是这一个目标的 prerequisites(前置条件),紧接着新的一行,必须以一个 tab 作为开头...在解决分层、分模块之后彼此之间如何依赖和协作很多时候都是有拆分原则的,得多借鉴前人的经验。

2K30

可移植的 Makefile 教程

Makefile 指定了依赖树的内容,并且提供了 Shell 命令来标的 先决条件(prerequisite) 生成目标。 ?...input.o: input.c input.h graphics.h physics.h Adding commands to rules 虽然我们已经构造了一个依赖树,但是还没有告诉 make 如何真正地标的先决条件中构建出目标...如果你打算创建示例中的源文件,并调用 make, 你会发现它实际上已经知道了它该如何构建目标文件。...Recursive Makefiles 当你的项目被分为几个子目录,你可能会试图在每个子目录下放一个 Makefile ,然后递归调用。 不要使用递归的 Makefile。...使用递归的 Makefile 毫无益处。好的选择是在项目的根目录放置一个 Makefile, 在那里进行调用。你可能需要告诉你的编辑器如何做到这一点。 当涉及子目录下的文件时,在名字中包含子目录即可。

1.3K10

探索Linux内核:Kconfig的秘密

我们可以scripts/kconfig/makefile,有几个主机程序,包括CONF, mconf,和nconf。...通过将源文件划分为不同的模块/组件,每个组件都由自己的Makefile管理。当您开始构建时,顶级Makefile按正确的顺序调用每个组件的makefile,构建组件,并将它们收集到最终的执行程序中。...KBuild指的是不同类型的makefileMakefile位于源根中的顶部makefile。 .config是内核配置文件。...顶部的makefile包含archmakefile,读取.config文件,进入子目录调用制作,使中定义的例程的帮助下实现每个组件的makefile。...如果你很快看到了与本文不同的东西,不要感到惊讶。 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对ZaLou.Cn的支持。

1.7K11

Linux下automake工具使用(自动构建Makefile文件)

下面将介绍如何利用 GNU Autoconf 及 Automake 这两套工具来协助我们自动产生 Makefile文件,并且让开发出来的软件可以像大多数源码包那样,只需"....就是所有源文件、头文件以及其他库文件都位于当前目录中,且没有子目录。Termutils就是这一类。 2) shallow指的是主要的源代码都储存在顶层目录,其他各个部分则储存在子目录中。...就是主要源文件在当前目录中,而其它一些实现各部分功能的源文件位于各自不同的目录。automake本身就是这一类。 3) deep指的是所有源代码都被储存在子目录中;顶层目录主要包含配置信息。...不然会报以下错误: 示例: [wbyq@wbyq tmp]$ automake --add-missing 3.9 运行configure配置生成最终的Makefile文件 configure脚本为了让一个程序能够在各种不同类型的机器上运行而设计的...main目录里的main.c是包含main函数的主程序,分别调用了sum和print目录下.c文件里的函数。 7.2 project顶层目录下的操作过程 1.

6.5K31

Hello Qt——QMake用户指南

2、构建工程 对于简单的工程,只需要在工程的顶层目录运行qmake。默认情况下,qmake会生成一个构建工程的MakeFile,此时可以运行平台相关的make工具构建工程。...使用此变量指定的每个子目录必须包含其自己的工程文件。 建议每个子目录中的工程文件与子目录本身具有相同的基名,因为这样可以省略文件名。....target:子工程相关的MakeFile标的基字符串 例如,定义两个子目录,它们的值不同于SUBDIRS的值。...commands:生成自定义构建目标的命令 CONFIG:自定义构建目标的特定配置选项 depends:自定义目标锁依赖的现有构建目标 recurse:为了调用子目标的MakeFile文件,当创建MakeFile...target:自定义构建目标创建的文件 CONFIG变量: recursive:指明MakeFile中要创建的规则,因而会在子目标的MakeFile文件中调用相关目标。

5.7K20

qmake手册(Qt5.9.3)

这意味着可以SUBDIRS项目中发出make check命令来运行整个测试套件。 检查目标的执行可能由某些Makefile变量定制。...CONFIG 自定义构建目标的特定配置选项。可以设置递归来表示应该在Makefile中创建规则来调用子目标特定的Makefile中的相关目标。该成员默认为每个子目标创建一个条目。...使用此变量指定的每个子目录都必须包含自己的项目文件。 建议每个子目录中的项目文件具有子目录本身相同的基本名称,因为这样可以省略文件名称。...subdirs 创建一个用于在子目录中构建目标的Makefile子目录是使用SUBDIRS变量指定的。 aux 创建一个Makefile,不建造任何东西。...这与示波器相同,但具有可以传递第二个参数以测试活动配置的附加优点。由于值的顺序在CONFIG变量中很重要(也就是说,最后一组将被认为是互斥值的活动配置),所以可以使用第二个参数来指定一组要考虑的值。

5.4K20

QT5.2 Assistant-设置应用程序图标

设置应用程序图标 应用程序图标,通常显示在一个应用程序的顶层窗口的左上角,可以通过调用QWindow:: setWindowIcon()设置。...然后,假设你正在使用qmake生成你的makefile文件,你只需要添加一个单一的行到您的Pro项目文件: RC_ICONS = myappico.ico         最后,重新生成你的makefile...图标编辑器允许您导入多个不同大小的图标(在不同的上下文中使用),以及与他们一起去的屏蔽图。在您的项目目录中将所有一系列的图标保存在一个文件中。...虽然用于定位图标的路径依赖于在桌面上的使用和它的配置,下面所有这些目录结构应该遵循相同的模式:子目录都按照主题,图标大小和应用程序类型进行组织。...如果您正在 专门为 GNOME开发 , 你 可能希望使用 一组标准 的GNU Build Tools , 在GTK+/Gnome Application Development book 的 相关章节

2.5K20

qmake:变量手册

通常,要注册的次要版本是元对象中推断出来的。 如果元对象未更改,并且您仍希望导入具有较新次要版本号的 QML 模块,则可以使用此变量。...建议每个子目录中的项目文件与子目录本身具有相同的基本名称,因为这样可以省略文件名。 例如,如果子目录名为 myapp,则该目录中的项目文件应名为 myapp.pro。...例如,定义两个子目录,它们都位于与 SUBDIRS 值不同的目录中,并且其中一个子目录必须在另一个子目录之前构建: SUBDIRS += my_executable my_library my_executable.subdir...允许的值为: app:创建用于构建应用程序的 Makefile(默认)。 lib:创建用于构建库的 Makefile。 subdirs:创建用于在子目录中构建目标的 Makefile。...子目录是使用 SUBDIRS 变量指定的。 aux:为不构建任何内容的项目创建一个 Makefile。 如果不需要调用编译器来创建目标,请使用此选项。例如,项目是用解释性语言编写的。

3.7K20
领券