1
6
一般来说,GNU make不支持具有多个输出的目标。但是,该规则有一个例外:模式规则。如果您可以构造makefile,使其使用模式规则生成对象文件,那么您就可以实现您的目标。例如:
您将看到,当在规则中检测到“错误”时,使用这个makefile,.d和.o文件都会被删除。这种方法的优点是,它通过描述如何生成.d文件以及生成该文件的规则来更准确地表示依赖关系图。 或者,本例中的一个常见范例如您所建议的那样:让GCC将.d文件生成为临时文件名,并仅在GCC命令成功完成后将其移动到位。通常,这是通过壳的技巧实现的:
这里的“魔术”是使用GCC标志
|
2
-1
埃里克的两个例子我都没有用。当您传入-MM开关时,GCC(版本4.4)不会编译任何东西,因此看起来您无法一次性编译和编写.d。以下是我所做的:
它首先删除一个现有的.d文件,生成新文件的第三行只有在第二个命令(实际的编译步骤)成功时才会执行(Eric的技巧不是必需的,make会自动执行)。
出于某种原因,我不明白,如果编译失败,现有的.o文件不会自动删除,但通过添加
|
Rodney · 如何在Ionic2构建脚本中运行copy命令 7 年前 |