2012-10-22 57 views
0

在makefile分配一個變量化妝

ifneq ($(GIT_INFO),) 
$(info $(GIT_INFO)) 
GIT_INFO:=Changed 
$(info $(GIT_INFO)) 
endif 

在那裏我有以下的,我的願望是,如果GIT_INFO設置的東西在命令行上,它的價值獲取與所需的字符串填充(細節不重要)。我添加了$(info..)這幾行來驗證這一段文件是否正在執行,但是,GIT_INFO的值沒有發生變化,事實並非如此。爲什麼不?我在命令行上通過GIT_INFO=true,並且這兩個地方打印true

回答

2

你有使用override

ifneq ($(GIT_INFO),) 
$(info $(GIT_INFO)) 
override GIT_INFO:=Changed 
$(info $(GIT_INFO)) 
endif 
2

the manual

如果一個變量已經設置了命令參數...,在makefile再平凡的任務被忽略。如果 要設置,即使它被設置 用命令的參數生成文件的變量,你可以使用一個override指令......

只需添加override

ifneq ($(GIT_INFO),) 
$(info $(GIT_INFO)) 
override GIT_INFO:=Changed 
$(info $(GIT_INFO)) 
endif