0

私のコードでは、ビルド中に次のように定義している 1 つのマクロを使用しています。

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

しかし、VAR=1000 と VAR=2000 の 2 つの実行可能ファイルを作成したいと考えています。実行可能ファイルの名前が 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ファイルをファイルに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)
于 2013-02-03T18:59:01.550 に答える