如何使用Makefile创建文件

如何使用Makefile创建文件,makefile,Makefile,我想从Makefile创建一个.c文件。该C文件的内容如下: char *variable1 = $(VAR1_FROM_MAKEFILE); char *variable2 = $(VAR2_FROM_MAKEFILE); 可能吗 提前感谢是的,您可以使用shell重定向将变量写入源文件: VAR1=foobar all: @echo "char *variable1 = \"$(VAR1)\"" > generated.c (此处的@符号不允许make显示echo命令)

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

char *variable1 = $(VAR1_FROM_MAKEFILE);
char *variable2 = $(VAR2_FROM_MAKEFILE);
可能吗


提前感谢

是的,您可以使用shell重定向将变量写入源文件:

VAR1=foobar
all:
    @echo "char *variable1 = \"$(VAR1)\"" > generated.c
(此处的@符号不允许make显示echo命令)


编辑:我不知道您在这里的意图是什么,但将Makefile变量作为宏传递给编译器可能更简单:

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

#include <stdio.h>

int main(int ac, char **av)
{
    printf("%s\n", VAR);
    exit(0);
}
#包括
内部主(内部ac,字符**av)
{
printf(“%s\n”,VAR);
出口(0);
}

make的文件选项如何

对于Gnu Make:

您好,我目前正在将变量作为marco传递给编译器。但是,当VAR的值在不修改Makefile的情况下更改时,这种情况就失败了。e、 g VAR:=$(shell时间+%H%M%S)我想做的是为内核对象创建一个Makefile。在内核模块的Makefile中没有“all:”规则。否则,您的第一个解决方案是伟大的!我对Makefiles知之甚少。请看这篇文章,了解如何在makefile中使用sed。至少在Ubuntu 14.04上不能使用make-3.81。事实上,需要make 3.82或更高版本