merlimat commented on issue #6311: The C++ Client distribution is basically borked. URL: https://github.com/apache/pulsar/issues/6311#issuecomment-585408699 @ashwinkapur > It does not seem possible to build the C++ client except possibly by using your docker image which uses mystery binaries. We're building C++ client in many different environments on Linux, Mac and Windows. It would be more helpful if you could specify where it's failing to build for you. > Your Cmake files seem to use old style Cmake which specifies each directory and file etc as opposed to just specifying dependencies of groups of objects of libraries and letting Cmake figure it out. I'd be happy to submit a patch fixing this and using Modern Cmake Keep in mind that this project was not started a couple of days ago. The version of CMake was probably not supporting these directives back then. If you have any improvement, please submit! > You seem to be using a patched version of google protobuf version 2 to avoid needless memory allocations. It's only used for Java. C++ protobuf is very efficient on its own. > Why not use google flatbuffers instead. When the protocol was designed, flatbuffer we relatively new and didn't support many languages (and required C++11 which we couldn't target at that point). > In the current head on github and the source distribution v 2.5.0 in protobuf/README.md at the bottom of the file you state: >> For C++ Client: >>The pre-generated C++ code is at pulsar-client-cpp/lib/PulsarApi.pb.cc and pulsar-client->> cpp/lib/PulsarApi.pb.h. >> You don't need to manually generate C++ code. The C++ code is automatically generated by cmake. > However, these files aren't there in either github or the source distribution. The `protobuf/README.md` section on C++ is out-of-date and misleading. The files are indeed generated by cmake (using the system `protoc`) and therefore are not anymore in the source tree (like they used to be in the past). > There is no directory called build in the source distribution. In the source distribution find . -name protobuf.patch finds no file. There is a build/docker/protobuf.patch on github on head but now I'm not sure if this is the same patch. Again, the readme is out of date. `./pulsar-common/generate_protobuf_docker.sh` will use the patched protoc to generate the `PulsarApi.java`. Please submit PRs to fix the stale README file
---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected] With regards, Apache Git Services
