我的應用程序makefile有一些版本變量,我希望我的makefile使用它來生成version.h文件。目前,我有共同的生成文件設置,如:使用makefile生成版本信息
version :
@echo "Generating version.h ..."
@echo line > version.h
@echo etc >> version.h
debug : blah blah version blah blah
release : blah blah version blah blah
.DEFAULT_GOAL := debug release
當應用程序的makefile是:
MAJOR_VERSION = 1
MINOR_VERSION = 42
include makefile.common
這工作,但最終產生的版本文件的兩倍。我怎樣才能讓它只生成一次 - 這樣version
在某種程度上取決於應用程序級別的makefile更改。這不是生成兩次是不可忍受的緩慢,我只是想正確地做到這一點。
另外,我可能有一個不想要版本信息的應用程序,我如何有條件地生成此文件?
爲什麼選擇SECONDEXPANSION? – Barry 2014-09-26 13:57:40
@Barry使得$$(MAKEFILE_LIST)不僅對當前包含的makefile進行評估,而且還包括_all_ makefiles,甚至之後。這是必要的,因爲配方中的一些變量值可能取決於它下面的代碼。 – 2014-09-26 17:23:29
如果我想過濾掉%.d的話怎麼辦?我$(過濾%.d,$(MAKEFILE_LIST))的作品,但我無法找出一種方法,在.SECONDEXPANSION ...上工作,除了再次相同。 – Barry 2014-09-26 17:59:03