我在目录中有 .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)
答案 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)