This directory contains *CMake* files that can be used to build protobuf
with *MSVC* on *Windows*. You can build the project from *Command Prompt*
and using an *Visual Studio* IDE.
You need to have [CMake](http://www.cmake.org), [Visual Studio](https://www.visualstudio.com)
and optionally [Git](http://git-scm.com) installed on your computer before proceeding.
Most of the instructions will be given to the *小ommand Prompt*, but the same
actions can be performed using appropriate GUI tools.
Environment Setup
=================
Open the appropriate *Command Prompt* from the *Start* menu.
For example *VS2013 x64 Native Tools Command Prompt*:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64>
Change to your working directory:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64>cd C:\Path\to
C:\Path\to>
Where *C:\Path\to* is path to your real working directory.
Create a folder where protobuf headers/libraries/binaries will be installed after built:
C:\Path\to>mkdir install
If *cmake* command is not available from *Command Prompt*, add it to system *PATH* variable:
C:\Path\to>set PATH=%PATH%;C:\Program Files (x86)\CMake\bin
If *git* command is not available from *Command Prompt*, add it to system *PATH* variable:
C:\Path\to>set PATH=%PATH%;C:\Program Files\Git\cmd
Good. Now you are ready to continue.
Getting Sources
===============
You can get the latest stable source packages from the
[releases](https://github.com/google/protobuf/releases) page.
Or you can type:
C:\Path\to> git clone -b [release_tag] https://github.com/google/protobuf.git
Where *[release_tag]* is a git tag like *v3.0.0-beta-1* or a branch name like *master*
if you want to get the latest code.
Go to the project folder:
C:\Path\to>cd protobuf
C:\Path\to\protobuf>
Protobuf unit-tests require gmock to build. If you download protobuf source code
from the *releases* page, the *gmock* directory should already be there. If you checkout
the code via `git clone`, this *gmock* directory won't exist and you will have to
download it manually or skip building protobuf unit-tests.
You can download gmock as follows:
C:\Path\to\protobuf>git clone -b release-1.7.0 https://github.com/google/googlemock.git gmock
Then go to *gmock* folder and download gtest:
C:\Path\to\protobuf>cd gmock
C:\Path\to\protobuf\gmock>git clone -b release-1.7.0 https://github.com/google/googletest.git gtest
If you absolutely don't want to build and run protobuf unit-tests, skip
this steps and use protobuf at your own risk.
Now go to *cmake* folder in protobuf sources:
C:\Path\to\protobuf\gmock>cd ..\cmake
C:\Path\to\protobuf\cmake>
Good. Now you are ready to *CMake* configuration.
CMake Configuration
===================
*CMake* supports a lot of different
[generators](http://www.cmake.org/cmake/help/latest/manual/cmake-generators.7.html)
for various native build systems.
We are only interested in
[Makefile](http://www.cmake.org/cmake/help/latest/manual/cmake-generators.7.html#makefile-generators)
and
[Visual Studio](http://www.cmake.org/cmake/help/latest/manual/cmake-generators.7.html#visual-studio-generators)
generators.
We will use shadow building to separate the temporary files from the protobuf source code.
Create a temporary *build* folder and change your working directory to it:
C:\Path\to\protobuf\cmake>mkdir build & cd build
C:\Path\to\protobuf\cmake\build>
The *Makefile* generator can build the project in only one configuration, so you need to build
a separate folder for each configuration.
To start using a *Release* configuration:
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 ^
../..
It will generate *nmake* *Makefile* in current directory.
To use *Debug* configuration:
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 ^
../..
It will generate *nmake* *Makefile* in current directory.
To create *Visual Studio* solution file:
C:\Path\to\protobuf\cmake\build>mkdir solution & cd solution
C:\Path\to\protobuf\cmake\build\solution>cmake -G "Visual Studio 12 2013 Win64" ^
-DCMAKE_INSTALL_PREFIX=../../../../install ^
../..
It will generate *Visual Studio* solution file *protobuf.sln* in current directory.
If the *gmock* directory does not exist, and you do not want to build protobuf unit tests,
you need to add *cmake* command argument `-Dprotobuf_BUILD_TESTS=OFF` to disable testing.
Compiling
=========
To compile protobuf:
C:\Path\to\protobuf\cmake\build\release>nmake
or
C:\Path\to\protobuf\cmake\build\debug>nmake
And wait for the compilation to finish.
If you prefer to use the IDE:
* Open the generated protobuf.sln file in Microsoft Visual Studio.
* Choose "Debug" or "Release" configuration as desired.
* From the Build menu, choose "Build Solution".
And wait for the compilation to finish.
Testing
=======
To run unit-tests, first you must compile protobuf as described above.
Then run:
C:\Path\to\protobuf\cmake\build\release>nmake check
or
C:\Path\to\protobuf\cmake\build\debug>nmake check
You can also build project *check* from Visual Studio solution.
Yes, it may sound strange, but it works.
You should see output similar to:
Running main() from gmock_main.cc
[==========] Running 1546 tests from 165 test cases.
...
[==========] 1546 tests from 165 test cases ran. (2529 ms total)
[ PASSED ] 1546 tests.
To run specific tests:
C:\Path\to\protobuf>cmake\build\release\tests.exe --gtest_filter=AnyTest*
Running main() from gmock_main.cc
Note: Google Test filter = AnyTest*
[==========] Running 3 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 3 tests from AnyTest
[ RUN ] AnyTest.TestPackAndUnpack
[ OK ] AnyTest.TestPackAndUnpack (0 ms)
[ RUN ] AnyTest.TestPackAndUnpackAny
[ OK ] AnyTest.TestPackAndUnpackAny (0 ms)
[ RUN ] AnyTest.TestIs
[ OK ] AnyTest.TestIs (0 ms)
[----------] 3 tests from AnyTest (1 ms total)
[----------] Global test environment tear-down
[==========] 3 tests from 1 test case ran. (2 ms total)
[ PASSED ] 3 tests.
Note that the tests must be run from the source folder.
If all tests are passed, safely continue.
Installing
==========
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
You can also build project *INSTALL* from Visual Studio solution.
It sounds not so strange and it works.
This will create the following folders under the *install* location:
* bin - that contains protobuf *protoc.exe* compiler;
* include - that contains C++ headers and protobuf *.proto files;
* lib - that contains linking libraries and *CMake* configuration files for *protobuf* package.
Now you can if needed:
* Copy the contents of the include directory to wherever you want to put headers.
* Copy protoc.exe wherever you put build tools (probably somewhere in your PATH).
* Copy linking libraries libprotobuf[d].lib, libprotobuf-lite[d].lib, and libprotoc[d].lib wherever you put libraries.
To avoid conflicts between the MSVC debug and release runtime libraries, when
compiling a debug build of your application, you may need to link against a
debug build of libprotobufd.lib with "d" postfix. Similarly, release builds should link against
release libprotobuf.lib library.
DLLs vs. static linking
=======================
Static linking is now the default for the Protocol
没有合适的资源?快使用搜索试试~ 我知道了~
protobuf-java-3.5.1.zip
共1173个文件
cc:366个
h:298个
java:151个
需积分: 10 4 下载量 117 浏览量
2018-03-18
14:15:22
上传
评论
收藏 5.7MB ZIP 举报
温馨提示
protobuf-java-3.5.1.zip pherl released this on 21 Dec 2017 · 18 commits to 3.5.x since this release
资源推荐
资源详情
资源评论
收起资源包目录
protobuf-java-3.5.1.zip (1173个子文件)
configure.ac 7KB
configure.ac 6KB
configure.ac 3KB
Makefile.am 80KB
Makefile.am 55KB
Makefile.am 22KB
Makefile.am 10KB
Makefile.am 7KB
Makefile.am 3KB
ar-lib 6KB
bad_utf8_string 3B
BUILD 34KB
BUILD 3KB
BUILD 765B
gmock.BUILD 616B
six.BUILD 227B
protobuf.bzl 13KB
gtest.cbproj 10KB
gtest_unittest.cbproj 9KB
gtest_main.cbproj 8KB
descriptor.pb.cc 549KB
gmock-gtest-all.cc 414KB
gtest-all.cc 346KB
descriptor_unittest.cc 266KB
descriptor.cc 265KB
gtest_unittest.cc 234KB
gtest.cc 180KB
test_util.cc 180KB
gmock-matchers_test.cc 165KB
cpp_message.cc 153KB
js_generator.cc 125KB
map_test.cc 117KB
parser_unittest.cc 108KB
type.pb.cc 102KB
message_differencer_unittest.cc 101KB
wrappers.pb.cc 99KB
test_util_lite.cc 89KB
conformance_test.cc 88KB
generated_message_reflection.cc 87KB
protostream_objectwriter_test.cc 85KB
command_line_interface_unittest.cc 81KB
strutil.cc 80KB
cpp_unittest.cc 78KB
command_line_interface.cc 77KB
map_test_util.cc 76KB
parser.cc 76KB
gtest_pred_impl_unittest.cc 76KB
text_format.cc 75KB
extension_set.cc 72KB
plugin.pb.cc 69KB
gmock-spec-builders_test.cc 68KB
message_differencer.cc 64KB
api.pb.cc 60KB
text_format_unittest.cc 57KB
repeated_field_unittest.cc 55KB
python_generator.cc 55KB
wire_format.cc 54KB
objectivec_helpers.cc 54KB
java_message.cc 53KB
struct.pb.cc 53KB
extension_set_unittest.cc 52KB
arena_unittest.cc 51KB
gtest-death-test.cc 50KB
cpp_file.cc 49KB
gtest-printers_test.cc 48KB
coded_stream_unittest.cc 48KB
php_generator.cc 47KB
wire_format_unittest.cc 47KB
java_message_field.cc 46KB
protostream_objectwriter.cc 42KB
gtest-death-test_test.cc 42KB
cpp_string_field.cc 42KB
gmock-generated-matchers_test.cc 41KB
protostream_objectsource.cc 41KB
generated_message_reflection_unittest.cc 41KB
java_message_lite.cc 40KB
gmock-generated-actions_test.cc 40KB
cpp_message_field.cc 39KB
gmock-actions_test.cc 39KB
gtest-port_test.cc 38KB
java_string_field.cc 37KB
tokenizer.cc 37KB
tokenizer_unittest.cc 37KB
java_enum_field.cc 36KB
java_enum_field_lite.cc 35KB
java_message_field_lite.cc 34KB
javanano_primitive_field.cc 34KB
java_map_field_lite.cc 34KB
java_string_field_lite.cc 33KB
protostream_objectsource_test.cc 33KB
java_primitive_field_lite.cc 33KB
gtest-param-test_test.cc 33KB
lite_unittest.cc 32KB
field_mask_util_test.cc 32KB
cpp_helpers.cc 32KB
gtest_output_test_.cc 32KB
java_primitive_field.cc 32KB
dynamic_message.cc 31KB
strutil_unittest.cc 31KB
zero_copy_stream_unittest.cc 31KB
共 1173 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12
资源评论
sugarTan
- 粉丝: 158
- 资源: 563
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功