Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有.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)
简短的回答:你不能。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)