我可以指定一个始终运行的Makefile配方吗?

我可以指定一个始终运行的Makefile配方吗?,makefile,gnu-make,Makefile,Gnu Make,我在Makefile中有一个配方,它应该始终执行,不带任何条件,无论调用make时指定了什么(如果指定了)目标 执行此配方将对其他一些规则的先决条件产生影响,因此我希望在make考虑Makefile中的任何其他规则之前执行此配方 由于执行此配方不会总是导致其他规则的先决条件得到满足(即代码> 认为它们过时),我不能将此配方放入 >假冒< /代码>目标,并将此作为其他目标的前提条件,因为使将所有依赖的目标视为过时的,即使他们不是 我想定义一个伪变量,它被分配一个${shell my;recipe;

我在Makefile中有一个配方,它应该始终执行,不带任何条件,无论调用
make
时指定了什么(如果指定了)目标

执行此配方将对其他一些规则的先决条件产生影响,因此我希望在
make
考虑Makefile中的任何其他规则之前执行此配方

由于执行此配方不会总是导致其他规则的先决条件得到满足(即<>代码> <代码>认为它们过时),我不能将此配方放入<代码> >假冒< /代码>目标,并将此作为其他目标的前提条件,因为<代码>使将所有依赖的目标视为过时的,即使他们不是


我想定义一个伪变量,它被分配一个
${shell my;recipe;commands}
的结果,但它似乎执行起来不可靠。

可能有一个更优雅的答案,但是一个虚假的目标是makefile中每个其他目标的依赖项,它应该满足您的要求。

正如我在问题中所说的,我不能这样做,因为即使不需要它,它也会重新生成。操作的工件是什么?您不能在步骤中添加条件以避免重复操作吗?或者使用真实的文件来表示操作已经发生?操作主要是复制一堆文件,我事先不知道。只复制新文件,如果它们比我的一个目标更新,make将认为它已过时。因此,应始终执行复制操作,以检查是否需要重新构建target.interest。奇怪的是,你只想复制文件。我假设它们被make操作以某种方式修改了?或者你只是想在某个公共地点收集它们?但是你没有办法为复制创建一个模式规则吗?它有点复杂,但是复制操作是最重要的一点。我可能会想出一些复杂的代码来检查是否有更新的文件要复制,然后(并且只有在那时)复制它们,让目标认为它过时了。我只是希望在调用
make
时有一个简单的解决方案,即“在执行任何其他操作之前只运行此代码”