2012-08-29 83 views
2

我在Windows中使用make,我想从文件中读取几个值作为makefile中的变量。将文件中的值读入变量

我有包括如下的文件:

/* A comment */ 
#define SOME_STRING "ABCDE" 

/* A comment   "  " */ 
#define BLANK_STRING "  " 

/* A comment */ 
#define SOME_VERSION 01.01a01 

我想在我的makefile两个变量来结束。一套设置为ABCDE,另一套设置为01.01a01

这也可以使用makefile中调用的一些bash命令来完成。我是新来makefiles,bash和stackoverflow,所以请忍受我!

感谢

斯蒂芬

回答

1
all: 
    echo $(SOME_VERSION) 

imports: input_file 
    sed -n 's/^#define \([^ ]*\) \("*[^"]*"*\)/\1=\2/p' input_file > imports 

include imports 
+0

谢谢,这个作品真的很好。我必须更改为'-include imports',否则我会收到_error:imports:没有这样的文件或目录_。即使错误导入工作正确,所以错误抑制似乎是我可以接受的解决方案。 – sclarke81

+0

我决定使用这个作为我的解决方案,因为它会应付对'input_file'的更改。这是因为它正在使用#define的名称。我的#define的名称是固定的,但是可以添加新的#define。直到看到@perreal的解决方案和@Beta – sclarke81

0
VARS := $(shell sed -n "s/^\#define .* //p" filename) 

A = $(word 1, $(VARS)) 
B = $(word 2, $(VARS)) 
+0

,我没有考虑过这种情况,这对我来说并不合适。我想这是因为我错过了我的问题。当'SOME_STRING'为空时,我会收到_unexpected EOF,同时寻找匹配的'''_。我已经更新了这个问题以包含这种情况。 – sclarke81

相关问题