0

我有.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)
4

1 回答 1

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)
于 2013-03-21T03:46:12.690 回答