如果 makefile 发生变化,请重建所有目标吗?
但如何告诉 make ,如果 makefile 更改后,它将运行make clean
然后make
?
或者如何指示make在那种情况下运行其他命令?我是否必须写一种特殊的目标?
答案 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 $@