我有一個makefile,它從命令行接受一個變量並將其傳遞給編譯器(對於C++ preprocesor)。Makefile並不總是重建
下面是代碼:
bar=0
file.o: foo.cpp
ifeq($(bar), 0)
g++ file.cpp -D foo=1 -o file.o
else
g++ file.cpp -D foo=0 -o file.o
endif
的問題是,運行
make bar=0
然後
make bar=1
後,它說,foo.o的是最新的(其它是,但我希望它重建,因爲代碼內部的變量更改)。
它是'foo.o'和'foo.cpp',還是'file.o'和'file.cpp'?如果你想要一個目標文件,你應該在編譯時加上'-c'標誌。 – 2014-10-30 11:52:18
你需要一個乾淨的目標。然後'乾淨'。 – 2014-10-30 13:16:25
不,他沒有。 「乾淨」毫無意義。如果你需要清潔,爲什麼要使用Make。只需編寫一個shell腳本。 Make的全部觀點是人們不應該清理任何東西。 – 2014-10-30 13:19:23