使用ProtocolBuffer的编译程序protoc可以将.proto生成*.pb.cc的C++代码文件. 但是在带有预编译头的工程里, 就经常需要手动添加类似stdafx.h的包含. 这里使用批处理来完成这一过程:
BuildProtoCC.bat
@echo off
set protofile=%1%.proto
set output_cc=%1%.pb.cc
"protoc.exe" %protofile% --cpp_out .
@echo 使用%protofile%生成%output_cc%
if exist "pchheader.txt" goto 合并预编译头 else echo pchheader.txt NOT EXIST
:合并预编译头
@echo 尝试删除以前的中间文件
del *.pched
@echo 合并编译头文件pchheader.txt到生成%output_cc%
copy pchheader.txt+"%output_cc%" "%output_cc%.pched" /y
@echo 等待protoc.exe结束
@ping -n 2 127.1>nul
echo 清理文件
del "%output_cc%"
ren "%output_cc%.pched" "%output_cc%"
这段批处理这样使用:
假设你有一个叫login.proto文件和批处理放在一起
在同一目录再放置一个pchheader.txt文件,并在里面写入#include "stdafx.h”
调用一下批处理
call BuildProtoCC.bat login
注意login不能带后缀
将使用protoc.exe生成login.pb.cc和login.pb.h 然后使用批处理合并文件功能自动合并预编译头