如何在制作目标后设置变量?

时间:2013-03-21 03:33:02

标签: c++ makefile

我在目录中有 .cc .proto 文件。 * .proto 文件用于生成 .cc .h 文件。

现在我希望 $(SRC)包含所有生成的.cc文件。怎么样?

PROTOS = $(wildcard *.proto)

SRC = $(wildcard *.cc)
OBJS = $(patsubst %.cc,%.o,$(SRC))

all: proto $(OBJS)

proto: $(PROTOS)
    protoc --cpp_out=. $(PROTOS)

1 个答案:

答案 0 :(得分:1)

简短的回答:你做不到。 Make确定在执行任何规则之前要执行的规则列表。

答案很长:你可以,但你必须让Make第二次运行:

PROTOS = $(wildcard *.proto)

SRC = $(wildcard *.cc)
OBJS = $(patsubst %.cc,%.o,$(SRC))

all: proto
    $(MAKE) objs

proto: $(PROTOS)
    protoc --cpp_out=. $(PROTOS)

objs: $(OBJS)