你似乎有一個類Unix環境中的Windows文件系統。因此,假如 你有sed
命令,你可以這樣做,像這樣:
的Makefile
FILE_CONFIG := build.config
.PHONY: SET GET
SET: FLAGS_ARCH ?= X64
SET: FLAGS_TYPE ?= RELEASE
SET:
@echo "FLAGS_ARCH: $(FLAGS_ARCH); FLAGS_TYPE: $(FLAGS_TYPE);" > $(FILE_CONFIG)
GET: CONFIG = $(shell sed -e 's/://g' -e 's/;//g' $(FILE_CONFIG))
GET: FLAGS_ARCH = $(word 2,$(CONFIG))
GET: FLAGS_TYPE = $(word 4,$(CONFIG))
GET:
@echo "ARCH: $(FLAGS_ARCH); TYPE: $(FLAGS_TYPE);";
設置默認值:
$ make SET
得到什麼,我們只是設置:
$ make GET
ARCH: X64; TYPE: RELEASE;
Set s青梅非默認:
$ make SET FLAGS_ARCH=i386 FLAGS_TYPE=DEBUG
讓他們:
$ make GET
ARCH: i386; TYPE: DEBUG;
你可以沒有sed
,只是使用cat
和make
text-functions, 但它需要更多的繁瑣程序。
在這個makefile中,FLAGS_ARCH
和FLAGS_TYPE
是target-specific variables。 它們每個都有一個目標定義SET
,另一個定義爲目標GET
,否則沒有定義。
此生成文件會容忍空間中的標點符號和:
;
前述