This is an automated email from the ASF dual-hosted git repository. lizhanhui pushed a commit to branch cmake_package in repository https://gitbox.apache.org/repos/asf/rocketmq-clients.git
commit a8ed15fc35d75b5dc7c1f9565c8db1f5a66cd305 Author: lizhanhui <[email protected]> AuthorDate: Tue Sep 20 22:17:10 2022 +0800 Prepare to build binary package --- cpp/examples/Makefile | 16 ++++++++++++++++ cpp/source/CMakeLists.txt | 11 +++++++++-- cpp/source/rocketmq/rocketmq.lds | 9 +++++++++ cpp/tools/package.sh | 36 ++++++++++++++++++++++++++++++++++++ 4 files changed, 70 insertions(+), 2 deletions(-) diff --git a/cpp/examples/Makefile b/cpp/examples/Makefile new file mode 100644 index 0000000..31773fb --- /dev/null +++ b/cpp/examples/Makefile @@ -0,0 +1,16 @@ +all: $(wildcard *.cpp) + c++ -std=c++11 -I../include -L../lib ExampleProducer.cpp -o example_producer -lrocketmq -Wl,-rpath,../lib + c++ -std=c++11 -I../include -L../lib ExamplePushConsumer.cpp -o example_push_consumer -lrocketmq -Wl,-rpath,../lib + c++ -std=c++11 -I../include -L../lib ExampleProducerWithAsync.cpp -o example_producer_with_async -lrocketmq -Wl,-rpath,../lib + c++ -std=c++11 -I../include -L../lib ExampleProducerWithFifoMessage.cpp -o example_producer_with_fifo_message -lrocketmq -Wl,-rpath,../lib + c++ -std=c++11 -I../include -L../lib ExampleProducerWithTimedMessage.cpp -o example_producer_with_timed_message -lrocketmq -Wl,-rpath,../lib + c++ -std=c++11 -I../include -L../lib ExampleProducerWithTransactionalMessage.cpp.cpp -o example_producer_with_transactinoal_message -lrocketmq -Wl,-rpath,../lib + c++ -std=c++11 -I../include -L../lib ExampleSimpleConsumer.cpp -o example_simple_consumer -lrocketmq -Wl,-rpath,../lib +clean: + rm -fr example_producer + rm -fr example_push_consumer + rm -fr example_producer_with_async + rm -fr example_producer_with_fifo_message + rm -fr example_producer_with_timed_message + rm -fr example_producer_with_transactinoal_message + rm -fr example_simple_consumer \ No newline at end of file diff --git a/cpp/source/CMakeLists.txt b/cpp/source/CMakeLists.txt index d42c6a1..32e7466 100644 --- a/cpp/source/CMakeLists.txt +++ b/cpp/source/CMakeLists.txt @@ -29,7 +29,9 @@ target_link_libraries(rocketmq opencensus::stats opencensus_proto spdlog) -set_target_properties(rocketmq PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) +set_target_properties(rocketmq + PROPERTIES + ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) add_library(rocketmq_shared SHARED @@ -53,7 +55,12 @@ target_link_libraries(rocketmq_shared opencensus::stats opencensus_proto spdlog) +target_link_options(rocketmq_shared + PRIVATE + $<$<PLATFORM_ID:Linux>:-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/rocketmq/rocketmq.lds>) set_target_properties(rocketmq_shared PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} - LIBRARY_OUTPUT_NAME rocketmq) \ No newline at end of file + LIBRARY_OUTPUT_NAME rocketmq + VERSION 5.0.0 + SOVERSION 5) \ No newline at end of file diff --git a/cpp/source/rocketmq/rocketmq.lds b/cpp/source/rocketmq/rocketmq.lds new file mode 100644 index 0000000..80ff8dc --- /dev/null +++ b/cpp/source/rocketmq/rocketmq.lds @@ -0,0 +1,9 @@ +VERSION_5.0.0 { + global: + *rocketmq::*; + extern "C++" { + *rocketmq::*; + }; + local: + *; +}; \ No newline at end of file diff --git a/cpp/tools/package.sh b/cpp/tools/package.sh new file mode 100644 index 0000000..640d9ec --- /dev/null +++ b/cpp/tools/package.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +TOOLS_DIR=$(dirname "$0") +WORKSPACE=$(cd -- "$TOOLS_DIR/.." && pwd) +BUILD_DIR=$WORKSPACE/_build +if [ -d $BUILD_DIR ]; then + rm -fr $BUILD_DIR +fi + +mkdir -p "$BUILD_DIR" + +cd $BUILD_DIR +cmake -DCMAKE_BUILD_TYPE=Release .. +make -j $(nproc) +VERSION="rocketmq-client-5.0.0" +DIST_DIR="$WORKSPACE/$VERSION/" +if [ -d "$DIST_DIR" ]; then + rm -fr $DIST_DIR +fi + +mkdir -p "$DIST_DIR/include" +mkdir -p "$DIST_DIR/lib" +mkdir -p "$DIST_DIR/examples" + +cp -r $WORKSPACE/include/rocketmq $DIST_DIR/include/ +cp $WORKSPACE/examples/*.cpp $DIST_DIR/examples/ +cp $WORKSPACE/examples/Makefile $DIST_DIR/examples/ + +if [[ "$OSTYPE" == "linux-gnu"* ]]; then + cp $BUILD_DIR/librocketmq.so $DIST_DIR/lib/ +elif [[ "$OSTYPE" == "darwin"* ]]; then + cp $BUILD_DIR/librocketmq.dylib $DIST_DIR/lib/ +fi + +echo "Create Package" +cd "$WORKSPACE" +tar -czvf "$VERSION.tar.gz" "$VERSION"
