关键词:
在网上找了很多,没有一个能拿过来直接用的
makefile调用所有子目录makefile
顶层makefile代码
SUBDIRS = $(shell find . * -type d | grep -v ".") .PHONY:all clean all: @for subdir in $(SUBDIRS); do $(MAKE) -C $$subdir; done clean: @for subdir in $(SUBDIRS); do $(MAKE) -C $$subdir clean; done
说明:
1. 使用shell find方法调出当前目录所有子目录
$(shell find . * -type d | grep -v ".")
备注:
-type表示类型,d是directory文件夹
*是所有内容,在makefile里给*加上“”会报错
如果没有用grep去除多级目录,则会产生以下效果
find . * -type d . ./02 ./03 ./001 001 02 03
使用grep -v去除所有.开头的项目,.需要以转义字符写为.,否则自动匹配正则表达式,会剔除所有内容
2. 使用隐式数组获取上述所有结果
SUBDIRS = $(shell find . * -type d | grep -v ".")
不是subdirs本身是隐式数组,是这种方法,可以让subdirs变量变成一个数组变量,把线性的find结果直接当数组在for里面用,也就是说subdirs本身其实是
dir1 dir2 dir3
这么个隐式数组
3. 使用for循环遍历所有目录
all: @for subdir in $(SUBDIRS); do $(MAKE) -C $$subdir; done
备注:
如果是复制过去的,考虑8个空格和tab的问题,MAKEFILE中使用tab开头以执行动作
注意$(MAKE) -C $$subdir是比较有用的自动推导的方法
如果是想make就$(MAKE) -C $$subdir,如果想clean就加上clean(同理如果有别的目标也可以指令,但是这样会对所有子makefile生效,子makefile如果找不到目标就exit:1)
两个伪目标 all clean对应子makefile中的默认make和clean,保持整齐。
makefile使用c语言的规则,空格和换行表示一段结束
也就是说,dir1 dir2 dir3能够被for subdir in xxx识别为三个元素,
dir1
dir2
dir3也能被识别为三个元素(我上面写的subdir=$(shell find 。。。)就是用的回车方法,因为在bash里执行的结果是换行
但是,如果subdir = "dir1 dir2 dir3",就表示只有一个文件夹了
因为字符串连成一片了,如果想拆开可以使用cut 指令,具体方法可以man cut试试看
依赖于目录下所有文件(包括子目录内)的 Makefile 规则
】依赖于目录下所有文件(包括子目录内)的Makefile规则【英文标题】:Makefilerulethatdependsonallfilesunderadirectory(includingwithinsubdirectories)【发布时间】:2012-12-2616:55:24【问题描述】:我的Makefile中的一条规则将整个目录(res/)压缩到ZIP... 查看详情
使用 makefile 和子目录
】使用makefile和子目录【英文标题】:Workingwithmakefileandsubdirectories【发布时间】:2017-03-0800:22:18【问题描述】:我正在尝试弄清楚如何。但不幸到现在。我想将所有.o文件放在“build”子目录中,所有.cpp都应该放在“src”中,可... 查看详情
makefile学习笔记系列4:makefile模板化(代码片段)
...ps://blog.csdn.net/u010312436/article/details/52461906中已经实现具有子目录层次结构的makefile写法,即主目录Makefile调用到每个子目录中的Makefile编译相应子目录的代码。但是每增加一个子目录又得为这个子目录添加一个为该子目录编译... 查看详情
自动编译当前目录下所有文件的makefile
...一个项目中使用的Makefile.脚本会自动搜索当前目录下所有子目录,并依据目录下的.c和.cxx生成对应的.o,最后生成应用application,代码中删除了项目相关配置,如CFLAGS,LDFLAGS,CXXFLAGS中的gcc配置欢迎转载,烦请添加链接,谢谢!1SHELL=/... 查看详情
makefile--隐式规则
参考技术A示例2--makefile中出现同名命令注意事项示例3--使用include关键字时,出现同名命令makefile文件与1.mk文件位于同一个目录下makefile1.mkfunc.cmain.cmakefilemakefile等价于下面的文件从以上makefile执行结果可以看到,CC、RM、以及%.o:%.c... 查看详情
makefile学习笔记系列4:makefile模板化(代码片段)
...ps://blog.csdn.net/u010312436/article/details/52461906中已经实现具有子目录层次结构的makefile写法,即主目录Makefile调用到每个子目录中的Makefile编译相应子目录的代码。但是每增加一个子目录又得为这个子目录添加一个为该子目录编译... 查看详情
makefile:如何生成目标文件到上层目录
】makefile:如何生成目标文件到上层目录【英文标题】:makefile:howtogenerateobjectfilestoupperdirectory【发布时间】:2017-04-0421:08:16【问题描述】:我有一个makefile,如下,可以编译链接同一目录下的所有cpp文件:g++1x:=g++-std=c++14-stdlib=lib... 查看详情
Makefile - 从多个目录构建
】Makefile-从多个目录构建【英文标题】:Makefile-buildfrommultipledirectories【发布时间】:2021-08-1800:27:31【问题描述】:我是Makefile新手。我有一串多个目录,我想编译其中的所有.c文件。该字符串中的路径数可以更改(它作为来自脚... 查看详情
如何从makefile更改目录并执行子目录make file?
】如何从makefile更改目录并执行子目录makefile?【英文标题】:howtochangedirectoriesfrommakefileandexecutesubdirectoriesmakefile?【发布时间】:2015-07-1406:25:39【问题描述】:假设A有两个子目录B和C,每个子目录都有自己的make文件。父A有自己... 查看详情
Makefile:可以将 VPATH 变量应用于分配 Makefile 变量吗?
】Makefile:可以将VPATH变量应用于分配Makefile变量吗?【英文标题】:Makefile:CanVPATHvariableisappliedtoassigningMakefilevariable?【发布时间】:2015-11-2912:42:52【问题描述】:我尝试编写简单的makefile来练习。我有两个目录1.srcs(.c),2.include(.h)... 查看详情
makefile常用写法(代码片段)
这里写目录标题一、常规编译c语言语句二、初级使用Makefile1.在需要编译的项目的根目录下建立文件makefile2.打开makefile3.编写文件4.执行makefile三、进阶使用makefile1.多个c文件需要编译为一个可执行文件2.编译完成后删除所有的.o文... 查看详情
makefile调用makefile错误
】makefile调用makefile错误【英文标题】:makefilecallingmakefileerror【发布时间】:2008-11-2022:07:01【问题描述】:我有一个有效的品牌,我有平台代码,并且喜欢文件夹中每个操作系统的几个品牌。现在我有一个可以工作的makefile。我... 查看详情
第4课.编写通用的makefile(代码片段)
1.框架1.顶层目录的Makefile2.顶层目录的Makefile.build3.各级子目录的Makefile2.概述1.各级子目录的Makefile:它最简单,形式如下:obj-y+=file.oobj-y+=subdir/"obj-y+=file.o"表示把当前目录下的file.c编进程序里,"obj-y+=subdir/"表示要... 查看详情
如何让makefile执行的时候打印所有命令
很简单啊,不知道你都要打印些啥,反正只要你把要打印的代码都能通过主方法“main()”调用就可以了参考技术A可是Makefile执行时本来就会打印啊?除非命令前面加了@. 查看详情
一点一点学写makefile-自动搜所当前目录下的所有源文件
上个博客我们使用的是笨方法添加源文件,本次我要实现的是遍历文件夹来获得所有的cpp文件[plain]viewplaincopy//makefile CROSS = CC = $(CROSS)gcc CXX = $(CROSS 查看详情
[makefile]多目录makefile写法
...成一些功能,写在同一个文件看上去很不好,多个文件的Makefile又不是很熟,于是分享下面这篇文章转自:http://blog.csdn.net/yuzhihui_no1/article/details/44810357 前面已经分享了单目录项下多文件的makefile的编写,现在来看看多目录下... 查看详情
makefile步步为营(代码片段)
Makefile步步为营本目录主要包含Makefile一步步递进学习的示例代码makefile代码实例:https://www.lanzous.com/i9m9npistep0:Makefile小实验进行Makefile小实验,体验Makefile的功能。目录中的Makefile是不严谨的编写方式。目录中的Makefile_PHONY是严谨... 查看详情
5.16下午阅读813单词
Makefile之执行过程 1.依次读取变量“MAKEFILES”定义的makefile文件列表 2.读取工作目录下的makefile文件(根据命名的查找顺序“GNUmakefile”,“makefile”,“Makefile”,首先找到那个就读取那个) 3.依次读取工作目... 查看详情