我的应用程序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