我想知道如何強制make以正確的方式構建庫後刪除.o文件。如何刪除makefile中的中間目標文件
all: libtest.a
libtest.a: foo.o bar.o
ar r [email protected] $?
%.o : %.c
gcc -o [email protected] -c $<
與.o文件標記爲.INTERMEDIATE
的問題是,所有的.o文件被重新編譯,即使有一個源文件的更改,即使它們已經存在於檔案。有沒有辦法做到這一點。刪除目標文件並不重新編譯未更改的源文件以更新庫。
據我所知,如果你刪除所有的.o的編譯後庫中,即使只有一個源文件發生更改,也需要再次創建它們才能再次編譯庫。 – dietbacon
但更新庫時不需要未更改的對象文件。假設.o文件沒有被刪除,只有foo.c發生了變化。然後,可以使用簡單的「ar libtest.a foo.o」更新庫。 bar.o甚至不需要。但是,如果bar.o丟失,它會重新編譯它。 – user1353535
他們是需要的,但是因爲他們根本沒有改變,所以你不必再創建它們,只需要改變它們。它是這樣的:檢查哪些更改,重新創建.o爲所有.o's並創建庫 – dietbacon