![]() |
1
1
我确信一个纯gmake解决方案是可能的,但是使用一个外部命令来修改makefile,或者生成一个外部的makefile(您可以
大致如下:
然后跑
注意:确切的zsh行可能需要一些转义才能在make文件中工作,例如$$而不是$。也可以用bash+find替换。 |
![]() |
2
1
但也有一种更好的方法,它涉及虚假目标,它可以更好地显示进度和错误,并在一个文件夹出现问题时停止生成,而不是继续到其他目标:
同样,我在这里只使用一个Makefile,它应该适用于所有子项目。对于孙子文件夹中的每个子项目,使用根目录中的一个Makefile创建目标“build”。 |
![]() |
3
0
我将首先使用通配符函数的组合: http://www.gnu.org/software/make/manual/make.html#Wildcard-Function http://www.gnu.org/software/make/manual/make.html#Selective-Search 以及文件功能 http://www.gnu.org/software/make/manual/make.html#File-Name-Functions 对于排除(即:Jonathan Leffler提到的备份),使用vpath之外的单独文件夹进行备份,并使用良好的隐式规则。 您仍然需要定义要对哪些文件夹执行操作,但不需要定义其中的每个文件。 |
![]() |
4
0
要编译给定目录下的每个源文件,然后将它们全部链接起来,我建议使用简单的递归:要生成对象,请在此处编译所有源文件,将生成的对象(带有完整路径)添加到顶部源目录的列表中,在此处递归到所有目录中。要链接,请使用列表。 |