如何使用带有GNU Make的Windows中的Makefile从配置文件中写入或读取变量?
Makefile的构建配置的内容:
FLAGS_ARCH: X64; FLAGS_TYPE: RELEASE;
FILE_CONFIG = `cat c:\\build.config`
#FLAGS_ARCH =
#FLAGS_TYPE =
SET:
#how to set?
GET:
@echo ARCH: $(FLAGS_ARCH); TYPE: $(FLAGS_TYPE);
答案 0 :(得分:0)
您似乎拥有类似Unix环境的Windows文件系统。所以假设
你有sed
命令,你可以这样做:
<强>生成文件强>
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;
设置一些非默认值:
$ 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
的不同定义,否则没有定义。
此makefile将容忍标点符号:
和;
之前的空格