星期一, 三月 24, 2014

gnumake 如何检测系统,使用不同的设置?

最简单语法,利用系统隐含变量OS 来做判断:

ifeq (Windows,$(findstring Windows,$(OS)))LINKFLAG=
endif

不过变量OS 不见于任何文档,如何发现gnumake定义的所有的内置隐含variables?
GNU make provides .VARIABLES which holds all global variables' names
简单的Makefile语句打印出所有的定义的内置变量可以发现OS赫然其中了:

VARS_OLD = $(.VARIABLES)
$(foreach v,$(VARS_OLD),$(info $(v)))