我有一个目标为clean的makefile:
clean:
$(MAKE) -f <other makefile location> clean
当我在这个makefile中调用make clean时,它告诉我在其他makefile中没有规则'clean-linux'。具体来说就是输出。
make -f /root/ovaldi-5.5.25-src/project/linux/Makefile clean
make[1]: Entering directory '/root/ovaldi-5.5.25-src'
make[2]: Entering directory '/root/ovaldi-5.5.25-src'
make[2]: *** No rule to make target 'clean-linux'. Stop.
make[2]: Leaving directory '/root/ovaldi-5.5.25-src'
make[1]: Leaving directory '/root/ovaldi-5.5.25-src'
为什么它给它干净的linux目标而不仅仅像我指定的一样干净?
答案 0 :(得分:2)
只是猜测但是第二个makefile中的'clean'目标可能叫'clean-linux'?
你可以发布第二个makefile的干净目标吗?
编辑:
根据您发布的干净目标,您似乎只是错误地调用了clean-linux目标。
Beta在他们的回答中发布了处理问题的正确方法,所以我打算将其+1。
答案 1 :(得分:2)
当你制作(或$(MAKE))时,你默认使用makefile。所以这就是我认为正在发生的事情。
解决方案:重写你的第二个makefile(具有clean-linux的那个),以便clean-linux成为清理的先决条件(如果/当你在linux系统上)。那样它就不会运行make [2]。
ifeq ($(PLATFORM), LINUX) clean: clean-linux endif ifeq ($(PLATFORM), SUNOS) clean: clean-sunos endif clean:;