環境安裝
1:下載CMake
2:打開VS Command Prompt
3:修改工作目錄到目標目錄
cd C:\Path\to
4:創建編譯完后 protobuf headers/libraries/binaries 將要安裝的文件夾
C:\Path\to>mkdir install
5:確保 'cmake' 命令可用,(如果不可用確保 把它加入到 path 環境變量中)
set PATH=%PATH%;D:\Program Files\cmake-3.5.2-win32-x86\bin
6:確保Git命令可用(如果不可用,添加到到 path 環境變量)
set PATH=%PATH%;D:\Program Files\Git\cmd
源設置
下載 packages https://github.com/google/protobuf/releases
把protobuf 放入 C:\Path\to 目標
cd C:\Path\to\protobuf\cmake
CMake 配置
參考: Visual Studio Generators
注意:64位請用對應的 64位VS命令行
1:創建一個 build 目錄,並且改變當前工作目錄到build
mkdir build & cd build
------創建Release配置
C:\Path\to\protobuf\cmake\build>mkdir release & cd release
C:\Path\to\protobuf\cmake\build\release>cmake -G "NMake Makefiles" ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_INSTALL_PREFIX=../../../../install ^
../..
------創建Debug 配置
C:\Path\to\protobuf\cmake\build>mkdir debug & cd debug
C:\Path\to\protobuf\cmake\build\debug>cmake -G "NMake Makefiles" ^
-DCMAKE_BUILD_TYPE=Debug ^
-DCMAKE_INSTALL_PREFIX=../../../../install ^
../..
-----創建Visual Studio 解決方案文件
C:\Path\to\protobuf\cmake\build>mkdir solution & cd solution
C:\Path\to\protobuf\cmake\build\solution>cmake -G "Visual Studio 11 2012 Win64" ^
-DCMAKE_INSTALL_PREFIX=../../../../install ^
-Dprotobuf_BUILD_TESTS=OFF ^
../..
備注
Generates Visual Studio 11 (VS 2012) project files.
Visual Studio 11 2012 Win64 --Specify target platform x64
.
Visual Studio 11 2012 ARM --Specify target platform ARM
.
Visual Studio 11 2012 <WinCE-SDK> --Specify target platform matching a Windows CE SDK name.
Generates Visual Studio 12 (VS 2013) project files:
Visual Studio 12 2013 Win64 --Specify target platform x64
.
Visual Studio 12 2013 ARM --Specify target platform ARM
.
Generates Visual Studio 14 (VS 2015) project files:
Visual Studio 11 2012 Win64 --Specify target platform x64
.
Visual Studio 11 2012 ARM --Specify target platform ARM
.
Visual Studio 11 2012 <WinCE-SDK> --Specify target platform matching a Windows CE SDK name.
編譯
To compile protobuf:
C:\Path\to\protobuf\cmake\build\release>nmake
或者
C:\Path\to\protobuf\cmake\build\debug>nmake
或者
VS:打開生成的.sln 文件 即可。
如果出現如下錯誤:
修改Platform Toolset 即可
安裝
To install protobuf to the specified *install* folder:
C:\Path\to\protobuf\cmake\build\release>nmake install
or
C:\Path\to\protobuf\cmake\build\debug>nmake install
或者編譯VS解決方案中的“INSTALL”。
如果出現編譯錯誤,嘗試用管理員權限打開VS重新試試
定義消息體
package tutorial; message Person { required string name = 1; required int32 id = 2; optional string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { required string number = 1; optional PhoneType type = 2 [default = HOME]; } repeated PhoneNumber phone = 4; } message AddressBook { repeated Person person = 1; }
編譯生成對應library
c++:(protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/addressbook.proto)
protoc -I=. --cpp_out=. HookMessage.proto
生成對應的 .h 和.cpp 文件
c#:(protoc -I=$SRC_DIR --csharp_out=$DST_DIR $SRC_DIR/addressbook.proto)
生成.cs 文件
c++項目使用
1:添加protobuf頭文件: protobuf下的Src (protobuf-3.0.0-beta-2\src)
Property-->Configuration Properties-->c/c++-->General:Additional Include Directories
2:添加類庫文件 (上面build出來的類庫,如上例:C:\Path\to\protobuf\cmake\build\debug)
Property-->Configuration Properties-->Linker-->General-->Additional Library Directories
在使用cpp文件頂部加上
#pragma comment(lib, "libprotobufd.lib")
#pragma comment(lib, "libprotocd.lib")
build項目:
可能提示錯誤
該錯誤又由於 生成的類庫和當前的項目使用的是不一樣的 Runtime Library
修改如下配置即可: Property-->Configuration Properties-->c/c++-->Cide Generation-->Runtime Library( Multi-threaded DLL (/MD) | Multi-threaded Debug (/MTd) 等)
C#項目使用
引用Google.Protobuf.dll protobuf 源包中C#項目生成的DLL(需要打開項目自己編譯生成)