有什麼辦法可以根據變量的值重建某個目標嗎?使用Makefile重建目標文件
我有一個名爲DEBUG的命令行設置的Makefile。在執行「make DEBUG = no」之後,當我調用「make DEBUG = yes」時,我想要重建某些目標文件(以包含調試信息)。
有什麼辦法可以根據變量的值重建某個目標嗎?使用Makefile重建目標文件
我有一個名爲DEBUG的命令行設置的Makefile。在執行「make DEBUG = no」之後,當我調用「make DEBUG = yes」時,我想要重建某些目標文件(以包含調試信息)。
如果該文件不存在或其值不同,則將該變量的值寫入文件。使所有對象文件都依賴於該文件,以便每當文件更改所有對象文件時重新編譯。例如: -
BUILD := debug
SHELL := /bin/bash
$(shell [[ `cat .build 2>/dev/null` == ${BUILD} ]] || echo ${BUILD} > .build)
all : prog
prog : .build
touch [email protected]
clean :
rm prog .build
.PHONY: all clean
運行示例:
$ make
touch prog
$ make
make: Nothing to be done for `all'.
$ make BUILD=release
touch prog
$ make BUILD=release
make: Nothing to be done for `all'.
一個更好的辦法是建立調試和發佈構建成不同的目錄,如MSVS做,但需要更多的先進的makefile。
我正在研究一個非常受限制的Windows環境,所以我沒有所有的GNU好東西(貓,回聲等)。有任何想法嗎? – cyberguijarro
然後使用任何可用的腳本。 –
我不認爲windows shell的特點是像[[]]或||這樣的運算符。不管怎麼說,還是要謝謝你。 – cyberguijarro
要澄清一下,你希望Make的行爲不僅依賴於變量(這很容易),而且依賴於它之前運行的方式(這很棘手)。我猜你想要有一個對象文件的兩個不同版本(常規和'DEBUG'),但你希望它們具有相同的名稱並駐留在同一個目錄中,以便只有其中一個可以存在於時間。是對的嗎? – Beta