You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by "lizhimins (via GitHub)" <gi...@apache.org> on 2026/06/04 09:53:47 UTC

[PR] [C++] Improve CMake build system, fix warnings, and restore cross-platform CI [rocketmq-clients]

lizhimins opened a new pull request, #1257:
URL: https://github.com/apache/rocketmq-clients/pull/1257

   ## Motivation
   
   The C++ client currently has several build system issues:
   1. Proto files are maintained as a local copy, falling behind the shared `protos/` submodule by ~76 lines (missing Lite topic, Priority, DLQ support, etc.)
   2. CMake build has no unit test support — tests can only run via Bazel
   3. All 16 build warnings (`-Wdeprecated-declarations`) from enum types passed to fmt/spdlog are left unresolved
   4. CMakeLists.txt hardcodes `$HOME/grpc` and `$HOME/gflags` paths instead of following CMake conventions
   5. CI only runs on ubuntu-22.04 — macOS and Windows are disabled due to Bazel compatibility issues ([bazelbuild/bazel#18592](https://github.com/bazelbuild/bazel/issues/18592))
   
   ## Changes
   
   ### Proto submodule integration
   - Replace local proto copies (`cpp/proto/apache/rocketmq/v2/*.proto`) with symlinks to the shared `protos/` submodule
   - Add submodule existence check in CMakeLists.txt with a clear error message
   
   ### CMake improvements
   - Add `BUILD_TESTS` option with googletest support via FetchContent (24 tests, all passing)
   - Remove hardcoded `$HOME/grpc` and `$HOME/gflags` paths — follow standard `CMAKE_PREFIX_PATH` convention
   - Add test CMakeLists.txt for all 7 test directories under `source/`
   
   ### Fix build warnings
   - Add `fmt::formatter` specializations for `rocketmq::State`, `grpc::StatusCode`, and `apache::rocketmq::v2::Code` enums
   - Eliminates all 16 `-Wdeprecated-declarations` warnings from fmt 9.x
   - Bonus: log output now shows human-readable strings (e.g., `STARTED`, `UNAVAILABLE`) instead of raw numbers
   
   ### CI: restore cross-platform builds
   - Switch CI from Bazel to CMake to unblock macOS and Windows
   - Build matrix: `ubuntu-22.04`, `macos-latest`, `windows-2022` (aligned with Java/C#/Rust)
   - Cache gRPC build artifacts per platform to speed up subsequent runs
   
   ### Documentation
   - Rewrite README with complete build instructions (from dependency installation to test execution)
   - Remove outdated architecture diagrams
   
   ## Test plan
   
   - [x] CMake build passes with 0 warnings
   - [x] All 24 unit tests pass via `ctest --output-on-failure`
   - [ ] CI passes on ubuntu-22.04, macos-latest, windows-2022


-- 
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.

To unsubscribe, e-mail: commits-unsubscribe@rocketmq.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [C++] Improve CMake build system, fix warnings, and restore cross-platform CI [rocketmq-clients]

Posted by "lollipopjin (via GitHub)" <gi...@apache.org>.
lollipopjin merged PR #1257:
URL: https://github.com/apache/rocketmq-clients/pull/1257


-- 
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.

To unsubscribe, e-mail: commits-unsubscribe@rocketmq.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org