使用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 然後使用批處理合並文件功能自動合並預編譯頭
摘自:戰魂小築