|
2
|
| code_fodder · 技术社区 · 7 年前 |
|
1
1
编辑
:添加将变量传递到Sub Make的方法示例。通过添加优化一点
我不确定我是否完全理解您的组织,但处理子目录的一个解决方案如下。我假设,有点像在您的示例中,构建子目录
这是并行安全的,并保证只有在所有子构建完成后才会进行链接。请注意,您也可以
|
|
|
2
1
通常,您只需添加lib文件作为target.out的先决条件:
问题是,如果任何输出lib文件较新,这将重新链接target.out。通常情况下,这是您想要的(如果lib已更改,则需要重新链接目标),但您明确表示不需要。
GNUmake提供了一个名为“仅订购先决条件”的扩展,您在
现在,只有当target.out不存在时,它才会被重新链接,但在这种情况下,它仍然会等到
如果你
调用递归make,除非您有其他将在子目录中调用make的规则 |
|
|
3
0
好吧,所以我找到了“A”解决方案…但它有点违背我的意愿,因此很难看(但不是那样 那个 丑陋的): 这个 只有 我能理解的确保并行构建顺序的方法(再次从我读到的其他答案中)如下:
在这里将进行(或制作)三次DEP。在任何顺序,然后最后回音线将运行。 然而,我要做的是一个规则,特别是这样,它检查是否有任何更改或文件不存在-然后,仅在那时,运行该规则。 我所知道的从另一个规则的预兆中运行规则的唯一方法是递归地调用make。但是,我只在同一个makefile上递归调用make时会遇到以下问题:
所以我想到了这个: 生成文件:
MK:
因此,在这里,我将链接器规则放入一个名为link.mk的单独make file中,这样可以避免对同一个文件进行递归make调用(因此使用重新定义的规则)。但我必须导出我需要传递的所有变量…这很难看,如果这些变量发生变化,会增加一些维护开销。 …但是…它的工作原理是: 我不会很快标记这个,因为我希望一些天才会指出一个更整洁/更好的方法来做这件事… |
|
|
G_Hannigan · 移动嵌套文件的Makefile规则 8 年前 |
|
|
Peter Lenkefi · 强制make在同一环境中执行命令 8 年前 |
|
|
ms5991 · 没有规则使目标“bin/obj/list”。o' 8 年前 |
|
|
qweruiop · make命令前后的变量赋值 8 年前 |
|
|
Patrick Sanan · GNU Make:检查并行作业的数量 8 年前 |
|
|
kenorb · 如何在Makefile中输入父目录? 8 年前 |
|
|
ART · makefile中的条件检查 8 年前 |