如果makefile更改,如何强制make运行clean目标

时间:2011-05-05 06:14:42

标签: makefile

如果 makefile 发生变化,请重建所有目标吗?

但如何告诉 make ,如果 makefile 更改后,它将运行make clean然后make

或者如何指示make在那种情况下运行其他命令?我是否必须写一种特殊的目标?

3 个答案:

答案 0 :(得分:4)

可以试试这个:

all: Makefile.uptodate yourMainTarget

Makefile.uptodate: Makefile
    make clean
    touch Makefile.uptodate

我不是make专家所以我不知道这是不是很糟糕,但它在我的有限测试中有效; - )

答案 1 :(得分:4)

原油但有效(我想不出任何更优雅的东西):

include marker

marker: Makefile
    @touch $@
    $(MAKE) clean
    $(MAKE)

答案 2 :(得分:2)

我相信您希望自动运行干净,因为您希望在调用make时重建某些目标。这可以通过将名为FORCE的依赖项添加到您想要构建其目标的规则,然后像这样定义FORCE来实现:即没有规则,也没有依赖。

FORCE:

请参阅http://www.gnu.org/software/make/manual/make.html#Force-Targets

如果要重新编译所有文件,请将以下内容添加到makefile:

%.o : %.cpp FORCE
    $(CXX) -c $(CXXFLAGS) $< -o $@