如何使用makefile创建具有不同-D variable = value的两个C可执行文件

时间:2013-02-03 18:56:04

标签: c makefile

我的代码使用了一个我在构建过程中定义的宏,如下所示。

gcc -D VAR=1000 main.c -0 main

但我想创建两个可执行文件,一个用VAR = 1000,另一个用VAR = 2000。让我们说可执行文件名是main_1000和main_2000。

如何使用Makefile执行此操作。

我尝试这样做的方法如下。但它不起作用并给我一个错误。

gcc -g   -c -o main.o main.c
main.c: In function ‘main’:
main.c:5:16: error: ‘VAR’ undeclared (first use in this function)
main.c:5:16: note: each undeclared identifier is reported only once for each function it appears in
make: *** [main.o] Error 1

生成文件:

CC=gcc
CFLAGS=-g

all: main_1000 main_2000

main_1000: main.o
    $(CC) -D VAR=1000 -o main_1000 main.o $(CFLAGS)

main_2000: main.o
    $(CC) -D VAR=2000 -o main_2000 main.o $(CFLAGS)

1 个答案:

答案 0 :(得分:2)

main_1000: main.o

这意味着您已经期望main.o出现在那里。由于没有将c文件编译为o文件的规则,make使用其隐式规则,该规则不包括定义。你想要的是这个:

CC=gcc
CFLAGS=-g

all: main_1000 main_2000

main_1000: main.c
    $(CC) -D VAR=1000 -o $@ $^ $(CFLAGS)

main_2000: main.c
    $(CC) -D VAR=2000 -o $@ $^ $(CFLAGS)