{"id":13418028,"url":"https://github.com/protobuf-c/protobuf-c","last_synced_at":"2025-05-12T15:21:51.265Z","repository":{"id":11879131,"uuid":"14440211","full_name":"protobuf-c/protobuf-c","owner":"protobuf-c","description":"Protocol Buffers implementation in C","archived":false,"fork":false,"pushed_at":"2025-04-07T01:18:13.000Z","size":1541,"stargazers_count":2789,"open_issues_count":21,"forks_count":736,"subscribers_count":116,"default_branch":"master","last_synced_at":"2025-04-23T17:17:55.119Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/protobuf-c.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-11-16T02:33:30.000Z","updated_at":"2025-04-23T01:42:08.000Z","dependencies_parsed_at":"2023-11-26T00:21:59.594Z","dependency_job_id":"f34ad2a6-2cd3-4d6d-bc0e-ba50d1a96c46","html_url":"https://github.com/protobuf-c/protobuf-c","commit_stats":{"total_commits":626,"total_committers":53,"mean_commits":11.81132075471698,"dds":0.6853035143769968,"last_synced_commit":"8c201f6e47a53feaab773922a743091eb6c8972a"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protobuf-c%2Fprotobuf-c","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protobuf-c%2Fprotobuf-c/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protobuf-c%2Fprotobuf-c/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protobuf-c%2Fprotobuf-c/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/protobuf-c","download_url":"https://codeload.github.com/protobuf-c/protobuf-c/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250477820,"owners_count":21437049,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T22:00:57.438Z","updated_at":"2025-04-23T17:18:02.876Z","avatar_url":"https://github.com/protobuf-c.png","language":"C++","funding_links":[],"categories":["TODO scan for Android support in followings","Serialization","C++","序列化","Libraries by Language","正则表达式","Serialization ##"],"sub_categories":["Advanced books","高级书籍","C \u0026 C++","序列化","Web Frameworks ###"],"readme":"[![Build Status](https://github.com/protobuf-c/protobuf-c/actions/workflows/build.yml/badge.svg)](https://github.com/protobuf-c/protobuf-c/actions) [![Coverage Status](https://coveralls.io/repos/protobuf-c/protobuf-c/badge.png)](https://coveralls.io/r/protobuf-c/protobuf-c)\n\n## Overview\n\nThis is `protobuf-c`, a C implementation of the [Google Protocol Buffers](https://developers.google.com/protocol-buffers/) data serialization format. It includes `libprotobuf-c`, a pure C library that implements protobuf encoding and decoding, and `protoc-gen-c`, a code generator plugin for `protoc` that converts Protocol Buffer `.proto` files to C descriptor code. `protobuf-c` formerly included an RPC implementation; that code has been split out into the [protobuf-c-rpc](https://github.com/protobuf-c/protobuf-c-rpc) project.\n\n`protobuf-c` was originally written by Dave Benson and maintained by him through version 0.15 but is now being maintained by a new team. Thanks, Dave!\n\n## Building\n\n`protobuf-c` requires a C compiler, a C++ compiler, [protobuf](https://github.com/google/protobuf), and `pkg-config` to be installed.\n\n    ./configure \u0026\u0026 make \u0026\u0026 make install\n\nIf building from a git checkout, the `autotools` (`autoconf`, `automake`, `libtool`) must also be installed, and the build system must be generated by running the `autogen.sh` script.\n\n    ./autogen.sh \u0026\u0026 ./configure \u0026\u0026 make \u0026\u0026 make install\n\n## Test\n\nIf you want to execute test cases individually, please run the following command after running `./configure` once:\n\n     make check\n\t \n## Documentation\n\nSee the [online Doxygen documentation here](https://protobuf-c.github.io/protobuf-c) or [the Wiki](https://github.com/protobuf-c/protobuf-c/wiki) for a detailed reference. The Doxygen documentation can be built from the source tree by running:\n\n    make html\n\n## Synopsis\n\nUse the `protoc` command to generate `.pb-c.c` and `.pb-c.h` output files from your `.proto` input file. The `--c_out` options instructs `protoc` to use the protobuf-c plugin.\n\n    protoc --c_out=. example.proto\n\nInclude the `.pb-c.h` file from your C source code.\n\n    #include \"example.pb-c.h\"\n\nCompile your C source code together with the `.pb-c.c` file. Add the output of the following command to your compile flags.\n\n    pkg-config --cflags 'libprotobuf-c \u003e= 1.0.0'\n\nLink against the `libprotobuf-c` support library. Add the output of the following command to your link flags.\n\n    pkg-config --libs 'libprotobuf-c \u003e= 1.0.0'\n\nIf using autotools, the `PKG_CHECK_MODULES` macro can be used to detect the presence of `libprotobuf-c`. Add the following line to your `configure.ac` file:\n\n    PKG_CHECK_MODULES([PROTOBUF_C], [libprotobuf-c \u003e= 1.0.0])\n\nThis will place compiler flags in the `PROTOBUF_C_CFLAGS` variable and linker flags in the `PROTOBUF_C_LDFLAGS` variable. Read [more information here](https://autotools.info/pkgconfig/pkg_check_modules.html) about the `PKG_CHECK_MODULES` macro.\n\n## Versioning\n\n`protobuf-c` follows the [Semantic Versioning Specification](http://semver.org/) as of version 1.0.0.\n\nNote that as of version of 1.0.0, the header files generated by the protobuf-c compiler contain version guards to prevent incompatibilities due to version skew between the generated `.pb-c.h` files and the public `protobuf-c.h` include file supplied by the `libprotobuf-c` support library. While we will try not to make changes to `protobuf-c` that will require triggering the version guard often, such as releasing a new major version of `protobuf-c`, this cannot be guaranteed. Thus, it's a good idea to recompile your `.pb-c.c` and `.pb-c.h` files from their source `.proto` files with `protoc` as part of your build system, with proper source file dependency tracking, rather than shipping potentially stale `.pb-c.c` and `.pb-c.h` files that may not be compatible with the `libprotobuf-c` headers installed on the system in project artifacts like repositories and release tarballs. (Note that the output of the protobuf-c code generator is not standalone, as the output of some other tools that generate C code is, such as `flex` and `bison`.)\n\nMajor API/ABI changes may occur between major version releases, by definition. It is not recommended to export the symbols in the code generated by the protobuf-c compiler in a stable library interface, as this will embed the `protobuf-c` ABI into your library's ABI. Nor is it recommended to install generated `.pb-c.h` files into a public header file include path as part of a library API, as this will tie clients of your library's API to particular versions of `libprotobuf-c`.\n\n## Mailing list\n\n`protobuf-c`'s mailing list is hosted on a [Google Groups forum](https://groups.google.com/forum/#!forum/protobuf-c). Subscribe by sending an email to [protobuf-c+subscribe@googlegroups.com](mailto:protobuf-c+subscribe@googlegroups.com).\n\n## Contributing\n\nThe most recently released `protobuf-c` version is kept on the `master` branch, while the `next` branch is used for commits targeted at the next release. Please base patches and pull requests against the `next` branch, not the `master` branch.\n\nCopyright to all contributions are retained by the original author, but must be licensed under the terms of the [BSD-2-Clause](http://opensource.org/licenses/BSD-2-Clause) license. Please add a `Signed-off-by` header to your commit message (`git commit -s`) to indicate that you are licensing your contribution under these terms.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprotobuf-c%2Fprotobuf-c","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprotobuf-c%2Fprotobuf-c","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprotobuf-c%2Fprotobuf-c/lists"}