`
mmdev
  • 浏览: 13229441 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

制作一个遍历当前子目录的Makefile

阅读更多

要对子目录执行make,需要在当前目录制作一个Makefile,遍历所有子目录的Makefile,并运行相应的make target. 以下是我用来编译内核模块的一个Makefile

#

# Reference http://www.gnu.org/software/make/manual/make.html

#

# 需要排除的目录

exclude_dirs := include bin

# 取得当年子目录深度为1的所有目录名称

dirs := $(shell find . -maxdepth 1 -type d)

dirs := $(basename $(patsubst ./%,%,$(dirs)))

dirs := $(filter-out $(exclude_dirs),$(dirs))

# 避免clean子目录操作同名,加上_clean_前缀

SUBDIRS := $(dirs)

clean_dirs := $(addprefix _clean_,$(SUBDIRS) )

#

.PHONY: subdirs $(SUBDIRS) clean

# 执行默认make target

$(SUBDIRS):

$(MAKE) -C $@

subdirs: $(SUBDIRS)

# 执行clean

$(clean_dirs):

$(MAKE) -C $(patsubst _clean_%,%,$@) clean

clean: $(clean_dirs)

@find . \

\( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \

-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \

-o -name '*.symtypes' \) \

-type f -print | xargs rm -f

分享到:
评论

相关推荐

    linux下目录遍历程序

    6. 递归:程序通过递归调用自身,每次处理一个目录并进入其子目录,直到遍历完整个目录树。 7. 文件权限和所有权:理解`chmod`, `chown`, `chgrp`等命令及`rwx`权限模式,这对于遍历过程中可能涉及的文件访问控制至...

    Makefile自动搜所目录及子目录下的的所有文件、自动生成编译目录

    Makefile自动搜所目录及子目录下的的所有文件、自动生成编译目录,主要实现的功能入校描述: 1. myMath、myRecord、myString要分别能够单独生成各自对应的 .a 静态库文件 2. 将生成的 .a 文件统一放在根目录下 lib ...

    makefile分文件夹编译框架

    - **变量统一**:为了保持一致性,可能会定义一些全局变量,如CFLAGS(C编译器选项)和LDFLAGS(链接器选项),在子目录Makefile中引用这些变量。 - **清理规则**:确保每个子目录的Makefile都有清理规则,如`clean:...

    linux-一个emacs插件用于从当前目录向上查找最近的Makefile并执行make命令

    这符合许多软件项目结构,通常Makefile位于项目根目录,或者至少在一个包含源代码的子目录中。找到Makefile后,插件会调用系统上的`make`命令来编译或构建项目,这对于频繁进行编译测试的开发者来说非常方便。 标签...

    Linux内核Makefile文件.doc

    - 子目录Makefile:每个源代码子目录都有自己的Makefile,用于管理该目录下的文件。 - Kconfig文件:用于设置内核配置,通过menuconfig等工具生成.config文件,影响Makefile的行为。 ### 3. 内核编译文件 内核编译...

    Makefile的使用和编写.ppt

    Makefile的概念 Make的调用格式 Makefile的基本格式 Makefile的扩展话题 常见项目的Makefile格式 直接编译 遍历子目录 autoconf生成形

    8_Makefile的使用和编写.pdf

    遍历子目录时,需要使用特殊的目标和命令来处理子目录中的Makefile。 5. Automake/autoconf:开源软件构建软件automake和autoconf,通常用于生成Makefile。Autoconf能够解析configure.in文件来创建configure脚本,...

    跟我学写Makefile

    该函数可以遍历一个列表并应用某个函数。 ```makefile OBJS := $(foreach src,$(SRCS),$(patsubst %.c,%.o,$(src))) ``` 5. **if函数**: 用于进行条件判断。 ```makefile ifeq ($(DEBUG),yes) CFLAGS += -...

    makefile_test_plus.zip

    在描述中提到的`Makefile`实现了一个遍历文件夹的功能,这意味着它能够处理复杂目录结构下的源文件。通常,这涉及到使用`find`命令或者编写递归规则来搜索子目录中的`.c`文件。例如,一个简单的`find`命令可能如下:...

    和我一起学Makefile

    在Makefile中调用另一个make过程,用于处理子目录或其他复杂的构建需求。 ##### 五、定义命令包 有时候,我们需要将一组相关的命令封装在一起作为一个整体使用。 #### 第七部分:使用变量 ##### 一、变量的基础 ...

    uclinux中makefile文件整体分析

    `.EXPORT_ALL_VARIABLES`是一个特殊的目标,它的存在意味着Makefile中定义的所有变量都会被导出到包含的Makefile文件中,以便它们能够访问这些变量。 2. **变量定义** ```makefile ROOTDIR=$(shell pwd) TOOLS...

    跟我一起写 Makefile.pdf

    4. **嵌套执行 make**:可以在 Makefile 中调用 `make` 命令来递归地构建子目录。例如: ```makefile subdirs = dir1 dir2 all: $(subdirs) .PHONY: $(subdirs) %: (cd $@ && make) ``` 5. **定义命令包**:...

    Python实现生成简单的Makefile文件代码示例

    首先,本文提供的示例脚本名为genMakefile.py,它使用Python的标准库os和sys来遍历当前目录下的文件,并根据这些文件生成一个Makefile。脚本的作者是Mike,提供的联系方式为Mike_***,这表明脚本主要用于教育和交流...

    makefile经典教程

    - **文件搜寻**:make会根据当前目录和路径变量中的目录来查找文件。 - **伪目标**:没有对应的文件,主要用于执行命令,如`all`、`clean`等。 - **多目标**:可以定义多个目标在一个规则中。 - **静态模式**:允许...

    makefile的全面分析

    - **重载另一个makefile**:有时在构建过程中可能需要动态地改变构建规则,这可以通过重载一个新的makefile来实现。 - **make如何解析makefile文件**:make会依次解析Makefile文件,执行其中的规则,并处理相关的...

    Kernel Makefile

    它是一个复杂的构建框架,由多个Makefile文件组成,协同工作以确保内核代码的正确编译和链接。以下是对Kernel Makefile结构的详细解析: ### Kernel Makefile结构 1. **顶级Makefile**: 这是整个构建系统的起点,...

    通用makefile

    通用Makefile是C++编程中一个非常重要的工具,它是一个自动化构建系统,用于编译、链接和管理项目中的源代码文件。在C++开发中,Makefile能够大大提高开发效率,因为它能够自动跟踪依赖关系,执行编译命令,使得...

    跟我一起写 Makefile

    - 有时需要在一个Makefile中调用另一个Makefile。 - 例如:`make -C subdirectory`可以在子目录中执行`make`。 - **定义命令包**: - 可以通过定义函数来组合多个命令。 - 函数可以接受参数,并在Makefile中多...

Global site tag (gtag.js) - Google Analytics