1

我正在我的 Makefile 中创建一个主构建目标。我有一个像“all_images”这样的目标

all_images: fast_image slow_image

fast_image: clean_objects dep_1 dep_2 dep_3

slow_image: clean_objects dep_1 dep_2 dep_3

fast_image 在 makefile 中有一些其他条件,导致它在最终图像名称中包含 fast_image,而 slow_image 在其名称中具有相同的内容。

我想在快速和慢速构建之间进行清理(删除所有 .o 文件,显然不是最终图像)但是当我这样做时,clean_objects 不会第二次发生,因为它已经在 fast_image 期间发生了。

在你说“你不应该清理,因为 slow_image 应该重建所有改变的东西”之前,我们的特定环境有一个非常复杂的 makefile 来生成代码,clearmake 来做一些 gnu_make 启动,以及其他事情。我必须清理之间的对象,有没有办法强制已经发生的依赖关系再次发生?我知道我可以到处走动并手动删除所有 .o 文件,但是 clean_objects 目标已经关闭并且有一堆依赖项可以执行各种复杂的对象删除,我不想手动完成所有这些如果我不必。

谢谢!

4

1 回答 1

0

我确信有很多方法可以做到这一点,但我首先想到的是创建两个单独的目标clean_fast_image_objectsclean_slow_image_objects然后让这两个目标都调用一个定义的 makefile 函数,该函数运行clean_objects当前执行的命令。

于 2013-03-07T16:42:40.220 回答