我想在 Windows 下使用 nmake.exe 来构建一个使用 Google protobufs 的 C++ 项目。这需要为项目中的所有 .proto 文件执行 protoc.exe。
我遇到的问题是在 nmake.exe 中提出一个规则,该规则将编译一个 .proto 文件,这是由于 protoc.exe 的输出是 .pb.cc 形式的文件这一事实引起的
以下都不起作用:
.SUFFIXES: .proto .cc
.proto.cc:
protoc.exe -cpp_out=<target folder> $<
或者
.SUFFIXES: .proto .pb.cc
.proto.pb.cc:
protoc.exe -cpp_out=<target folder> $<
第二个产生以下错误:
filename.mk(3) : fatal error U1092: too many names in rule
这并不奇怪,但是第一个默默地失败了。我相当肯定第一种情况会失败,因为文件名“stems”,因为 gnu make 调用它们,由于在名称中添加了“.pb”序列而不匹配。