0

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

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)
4

1 回答 1

2
main_1000: main.o

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

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)
于 2013-02-03T18:59:01.550 回答