[英]Makefile | Cleaning up after Make - Error: No such file or directory | Error: recipe for target * failed
[英]makefile not cleaning up everything
我試圖弄清楚為什么我的makefile會留下所有* .o文件。 clean:
部分顯然具有:
rm *.o *.s *.bc fib fact1 fact2 *~
我嘗試將-f和其他幾個參數添加到rm中,但沒有任何運氣。 是什么導致這些不被刪除? 這是完整的makefile。 我用
make -f Makefile
OFILES= fib.o
OFILES1= fact1.o
OFILES2= fact2.o
CPATH=~/cse/llvm/bin/
LLVMASY=$(CPATH)llvm-as
LLVMOPT=$(CPATH)opt
LLVMLC=$(CPATH)llc
AS=clang -c
LD=clang
all: fib fact1 fact2
fib: $(OFILES)
$(LD) $(OFILES) $(LIBS) -o $@
fact1: $(OFILES1)
$(LD) $(OFILES1) $(LIBS) -o $@
fact2: $(OFILES2)
$(LD) $(OFILES2) $(LIBS) -o $@
%.o : %.s
$(AS) $< -o $@
%.s : %.bc
$(LLVMLC) $< -O=3 -tailcallopt -o $@
%.bc : %.llvm
$(LLVMASY) $< -o $@
clean:
rm *.o *.s *.bc fib fact1 fact2 *~
編輯:我應該添加所有* .s和* .bc文件成功刪除。 只會保留* .o文件。
免責聲明: 這是家庭作業,但這不是我正在評估的部分。 我的問題是出於好奇。
如果make
使用make -f Makefile
調用make
那么您將不會調用clean
目標,您將調用第一個( all
)目標。
嘗試:
$ make clean
也許一個clean
文件已經存在。 用ls -l clean
檢查,然后在終端中執行rm -v clean
。
另外,請使用/bin/ls -l -s *.o
檢查此類文件的所有權。 如果在某些時候你做了sudo make
他們可能根本國有因此無法rm
你的普通用戶。
順便說一句, make
如果有一個 makefile
,它將使用一個Makefile
(它將按該順序嘗試GNUmakefile
, makefile
和Makefile
)。因此, -f Makefile
通常不是必需的。
您應該clean
.PHONY
目標 ,例如,在clean:
規則之前添加
.PHONY: clean
也可以使用remake ,也許以remake -x
(或在您的情況下為remake -x clean
)調試您的Makefile
Makefile
-s中的默認目標是第一個目標, all
(也應標記為.PHONY
BTW)在您的情況下。 要清潔,請運行make clean
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.