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}>)