make命令替换代码中的常量

时间:2012-09-19 08:24:26

标签: c unix makefile

很抱歉,如果这是一个原始问题,但我在linux中真的很新。有没有办法在使用make命令构建应用程序时替换源代码中的常量?

我知道下一个可能的方法是更改​​源代码中使用的头文件,但我问这是因为我必须编程多个微控制器,每个微控制器应该有一个唯一的整数作为其编号(这个编号分配为代码中的常量)。

任何提示都将不胜感激!

2 个答案:

答案 0 :(得分:3)

您可以使用命令行上传递给编译器的 C语言宏。通常的Makefile代码段看起来像

CFLAGS = -DVERSION_INT=42 -DVERSION_STRING=\"Frobozz Magic Frobnicator (TM)\"

main: main.c
         $(CC) $(CFLAGS) -o $@ main.c

在main.c中你可能有

static int version = VERSION_INT;
static char vers[] = VERSION_STRING;

答案 1 :(得分:2)

通常通过在调用编译器时定义预处理器宏来完成,例如:

# Makefile
NUMBER := 42
%.o : %.c
    gcc -c -o $@ ${CPPFLAGS} ${CFLAGS} -DNUMBER=${NUMBER} $<

在源文件中:

// some.c
int number = NUMBER;