2010-04-19 142 views
5

我想从Makefile创建一个.c文件。该C文件的内容如下:如何使用Makefile创建文件

char *variable1 = $(VAR1_FROM_MAKEFILE); 
char *variable2 = $(VAR2_FROM_MAKEFILE); 

是否有可能?

在此先感谢

+0

见你如何这个[问题](http://stackoverflow.com/questions/1327998/calling-sed-for-a-source-in-makefile-am)可以在makefile中使用sed。 – kgiannakakis 2010-04-19 13:44:08

回答

7

是的,你可以使用shell重定向到写变量在源文件:

VAR1=foobar 
all: 
    @echo "char *variable1 = \"$(VAR1)\"" > generated.c 

(@符号在这里不要有被make显示echo命令)。


编辑:我不知道什么是您的意图在这里,但它可能是简单的Makefile中变量传递到编译器的宏:

VAR="toco.conf" 
CFLAGS = -DVAR='$(VAR)' 
all: 
    gcc $(CFLAGS) prog.c 

随着prog.c中存在:

#include <stdio.h> 

int main(int ac, char **av) 
{ 
    printf("%s\n", VAR); 
    exit(0); 
} 
+0

嗨,我目前正在将该变量作为marco传递给编译器。但是,当VAR的值改变而没有修改Makefile时,这种情况就会失败。例如VAR:= $(shell时间+%H%M%S) 我想要做的事情是一个内核对象的Makefile。 AFAIK在内核模块的Makefile中没有“all:”规则。否则,你的第一个解决方案非常棒我对Makefiles知之甚少。 – PrashantB 2010-04-19 14:15:34