This is an automated email from the ASF dual-hosted git repository.

xyz pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/pulsar-client-cpp.git


The following commit(s) were added to refs/heads/main by this push:
     new d396c90  [Improve][Build] Use pulsar client as a submodule for C++ 
projects (#115)
d396c90 is described below

commit d396c905a040b5f14ebcd5eec003bd78b3b8ec50
Author: A <[email protected]>
AuthorDate: Mon Nov 14 10:16:58 2022 +0700

    [Improve][Build] Use pulsar client as a submodule for C++ projects (#115)
    
    Fixes #100
    
    ### Motivation
    
    If your project builds through CMake and you try to add pulsar-client in 
some directory for build with whole project (i.e. third-party submodule) you 
can't do this because pulsar-client CMake uses CMAKE_*_DIR for configure, and 
this variable always related to top-level project.
    
    ### Modifications
    
    Change CMAKE_(SOURCES|BINARY)_DIR to PROJECT_*_DIR for library and tests
---
 CMakeLists.txt       | 46 +++++++++++++++++++++++-----------------------
 tests/CMakeLists.txt |  2 +-
 2 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 28be829..bbad70f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,13 +20,13 @@
 cmake_minimum_required(VERSION 3.4)
 
 project (pulsar-cpp)
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake_modules")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} 
"${PROJECT_SOURCE_DIR}/cmake_modules")
 
-execute_process(COMMAND cat ${CMAKE_SOURCE_DIR}/version.txt 
OUTPUT_STRIP_TRAILING_WHITESPACE
+execute_process(COMMAND cat ${PROJECT_SOURCE_DIR}/version.txt 
OUTPUT_STRIP_TRAILING_WHITESPACE
             OUTPUT_VARIABLE PULSAR_CLIENT_VERSION)
 message(STATUS "Pulsar Client version: ${PULSAR_CLIENT_VERSION}")
 
-execute_process(COMMAND 
${CMAKE_SOURCE_DIR}/build-support/gen-pulsar-version-macro.py 
OUTPUT_STRIP_TRAILING_WHITESPACE
+execute_process(COMMAND 
${PROJECT_SOURCE_DIR}/build-support/gen-pulsar-version-macro.py 
OUTPUT_STRIP_TRAILING_WHITESPACE
         OUTPUT_VARIABLE PULSAR_CLIENT_VERSION_MACRO)
 message(STATUS "Pulsar Client version macro: ${PULSAR_CLIENT_VERSION_MACRO}")
 
@@ -36,11 +36,11 @@ configure_file(templates/Version.h.in 
include/pulsar/Version.h @ONLY)
 option(LINK_STATIC "Link against static libraries" OFF)
 if (VCPKG_TRIPLET)
     message(STATUS "Use vcpkg, triplet is ${VCPKG_TRIPLET}")
-    set(CMAKE_PREFIX_PATH 
"${CMAKE_SOURCE_DIR}/vcpkg_installed/${VCPKG_TRIPLET}")
+    set(CMAKE_PREFIX_PATH 
"${PROJECT_SOURCE_DIR}/vcpkg_installed/${VCPKG_TRIPLET}")
     message(STATUS "Use CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH}")
     set(PROTOC_PATH "${CMAKE_PREFIX_PATH}/tools/protobuf/protoc")
     message(STATUS "Use protoc: ${PROTOC_PATH}")
-    set(VCPKG_DEBUG_ROOT 
"${CMAKE_SOURCE_DIR}/vcpkg_installed/${VCPKG_TRIPLET}/debug")
+    set(VCPKG_DEBUG_ROOT 
"${PROJECT_SOURCE_DIR}/vcpkg_installed/${VCPKG_TRIPLET}/debug")
     if (CMAKE_BUILD_TYPE STREQUAL "Debug")
         set(ZLIB_ROOT ${VCPKG_DEBUG_ROOT})
         set(OPENSSL_ROOT_DIR ${VCPKG_DEBUG_ROOT})
@@ -311,13 +311,13 @@ MESSAGE(STATUS "HAS_SNAPPY: ${HAS_SNAPPY}")
 set(ADDITIONAL_LIBRARIES $ENV{PULSAR_ADDITIONAL_LIBRARIES})
 link_directories( $ENV{PULSAR_ADDITIONAL_LIBRARY_PATH} )
 
-set(AUTOGEN_DIR ${CMAKE_BINARY_DIR}/generated)
+set(AUTOGEN_DIR ${PROJECT_BINARY_DIR}/generated)
 file(MAKE_DIRECTORY ${AUTOGEN_DIR})
 
 include_directories(
-  ${CMAKE_SOURCE_DIR}
-  ${CMAKE_SOURCE_DIR}/include
-  ${CMAKE_BINARY_DIR}/include
+  ${PROJECT_SOURCE_DIR}
+  ${PROJECT_SOURCE_DIR}/include
+  ${PROJECT_BINARY_DIR}/include
   ${AUTOGEN_DIR}
   ${Boost_INCLUDE_DIRS}
   ${OPENSSL_INCLUDE_DIR}
@@ -391,7 +391,7 @@ if(NOT APPLE AND NOT MSVC)
     set(COMMON_LIBS ${COMMON_LIBS} rt)
 endif ()
 
-link_directories(${CMAKE_BINARY_DIR}/lib)
+link_directories(${PROJECT_BINARY_DIR}/lib)
 
 set(LIB_NAME $ENV{PULSAR_LIBRARY_NAME})
 if (NOT LIB_NAME)
@@ -421,26 +421,26 @@ if (BUILD_WIRESHARK)
 endif()
 
 find_package(ClangTools)
-set(BUILD_SUPPORT_DIR "${CMAKE_SOURCE_DIR}/build-support")
+set(BUILD_SUPPORT_DIR "${PROJECT_SOURCE_DIR}/build-support")
 add_custom_target(format ${BUILD_SUPPORT_DIR}/run_clang_format.py
         ${CLANG_FORMAT_BIN}
         0
         ${BUILD_SUPPORT_DIR}/clang_format_exclusions.txt
-        ${CMAKE_SOURCE_DIR}/lib
-        ${CMAKE_SOURCE_DIR}/perf
-        ${CMAKE_SOURCE_DIR}/examples
-        ${CMAKE_SOURCE_DIR}/tests
-        ${CMAKE_SOURCE_DIR}/include
-        ${CMAKE_SOURCE_DIR}/wireshark)
+        ${PROJECT_SOURCE_DIR}/lib
+        ${PROJECT_SOURCE_DIR}/perf
+        ${PROJECT_SOURCE_DIR}/examples
+        ${PROJECT_SOURCE_DIR}/tests
+        ${PROJECT_SOURCE_DIR}/include
+        ${PROJECT_SOURCE_DIR}/wireshark)
 
 # `make check-format` option (for CI test)
 add_custom_target(check-format ${BUILD_SUPPORT_DIR}/run_clang_format.py
         ${CLANG_FORMAT_BIN}
         1
         ${BUILD_SUPPORT_DIR}/clang_format_exclusions.txt
-        ${CMAKE_SOURCE_DIR}/lib
-        ${CMAKE_SOURCE_DIR}/perf
-        ${CMAKE_SOURCE_DIR}/examples
-        ${CMAKE_SOURCE_DIR}/tests
-        ${CMAKE_SOURCE_DIR}/include
-        ${CMAKE_SOURCE_DIR}/wireshark)
+        ${PROJECT_SOURCE_DIR}/lib
+        ${PROJECT_SOURCE_DIR}/perf
+        ${PROJECT_SOURCE_DIR}/examples
+        ${PROJECT_SOURCE_DIR}/tests
+        ${PROJECT_SOURCE_DIR}/include
+        ${PROJECT_SOURCE_DIR}/wireshark)
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index cb0510d..3ce579e 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -56,6 +56,6 @@ file(GLOB TEST_SOURCES *.cc c/*.cc)
 
 add_executable(pulsar-tests ${TEST_SOURCES} ${PROTO_SOURCES})
 
-target_include_directories(pulsar-tests PRIVATE ${CMAKE_SOURCE_DIR}/lib 
${AUTOGEN_DIR}/lib)
+target_include_directories(pulsar-tests PRIVATE ${PROJECT_SOURCE_DIR}/lib 
${AUTOGEN_DIR}/lib)
 
 target_link_libraries(pulsar-tests ${CLIENT_LIBS} pulsarStatic 
$<$<CONFIG:Debug>:${GMOCKD_LIBRARY_PATH}> 
$<$<CONFIG:Debug>:${GTESTD_LIBRARY_PATH}> 
$<$<NOT:$<CONFIG:Debug>>:${GMOCK_LIBRARY_PATH}> 
$<$<NOT:$<CONFIG:Debug>>:${GTEST_LIBRARY_PATH}>)

Reply via email to