Skip to content

Commit d396c90

Browse files
author
A
authored
[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
1 parent ad79bec commit d396c90

File tree

2 files changed

+24
-24
lines changed

2 files changed

+24
-24
lines changed

CMakeLists.txt

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@
2020
cmake_minimum_required(VERSION 3.4)
2121

2222
project (pulsar-cpp)
23-
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake_modules")
23+
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake_modules")
2424

25-
execute_process(COMMAND cat ${CMAKE_SOURCE_DIR}/version.txt OUTPUT_STRIP_TRAILING_WHITESPACE
25+
execute_process(COMMAND cat ${PROJECT_SOURCE_DIR}/version.txt OUTPUT_STRIP_TRAILING_WHITESPACE
2626
OUTPUT_VARIABLE PULSAR_CLIENT_VERSION)
2727
message(STATUS "Pulsar Client version: ${PULSAR_CLIENT_VERSION}")
2828

29-
execute_process(COMMAND ${CMAKE_SOURCE_DIR}/build-support/gen-pulsar-version-macro.py OUTPUT_STRIP_TRAILING_WHITESPACE
29+
execute_process(COMMAND ${PROJECT_SOURCE_DIR}/build-support/gen-pulsar-version-macro.py OUTPUT_STRIP_TRAILING_WHITESPACE
3030
OUTPUT_VARIABLE PULSAR_CLIENT_VERSION_MACRO)
3131
message(STATUS "Pulsar Client version macro: ${PULSAR_CLIENT_VERSION_MACRO}")
3232

@@ -36,11 +36,11 @@ configure_file(templates/Version.h.in include/pulsar/Version.h @ONLY)
3636
option(LINK_STATIC "Link against static libraries" OFF)
3737
if (VCPKG_TRIPLET)
3838
message(STATUS "Use vcpkg, triplet is ${VCPKG_TRIPLET}")
39-
set(CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/vcpkg_installed/${VCPKG_TRIPLET}")
39+
set(CMAKE_PREFIX_PATH "${PROJECT_SOURCE_DIR}/vcpkg_installed/${VCPKG_TRIPLET}")
4040
message(STATUS "Use CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH}")
4141
set(PROTOC_PATH "${CMAKE_PREFIX_PATH}/tools/protobuf/protoc")
4242
message(STATUS "Use protoc: ${PROTOC_PATH}")
43-
set(VCPKG_DEBUG_ROOT "${CMAKE_SOURCE_DIR}/vcpkg_installed/${VCPKG_TRIPLET}/debug")
43+
set(VCPKG_DEBUG_ROOT "${PROJECT_SOURCE_DIR}/vcpkg_installed/${VCPKG_TRIPLET}/debug")
4444
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
4545
set(ZLIB_ROOT ${VCPKG_DEBUG_ROOT})
4646
set(OPENSSL_ROOT_DIR ${VCPKG_DEBUG_ROOT})
@@ -311,13 +311,13 @@ MESSAGE(STATUS "HAS_SNAPPY: ${HAS_SNAPPY}")
311311
set(ADDITIONAL_LIBRARIES $ENV{PULSAR_ADDITIONAL_LIBRARIES})
312312
link_directories( $ENV{PULSAR_ADDITIONAL_LIBRARY_PATH} )
313313

314-
set(AUTOGEN_DIR ${CMAKE_BINARY_DIR}/generated)
314+
set(AUTOGEN_DIR ${PROJECT_BINARY_DIR}/generated)
315315
file(MAKE_DIRECTORY ${AUTOGEN_DIR})
316316

317317
include_directories(
318-
${CMAKE_SOURCE_DIR}
319-
${CMAKE_SOURCE_DIR}/include
320-
${CMAKE_BINARY_DIR}/include
318+
${PROJECT_SOURCE_DIR}
319+
${PROJECT_SOURCE_DIR}/include
320+
${PROJECT_BINARY_DIR}/include
321321
${AUTOGEN_DIR}
322322
${Boost_INCLUDE_DIRS}
323323
${OPENSSL_INCLUDE_DIR}
@@ -391,7 +391,7 @@ if(NOT APPLE AND NOT MSVC)
391391
set(COMMON_LIBS ${COMMON_LIBS} rt)
392392
endif ()
393393

394-
link_directories(${CMAKE_BINARY_DIR}/lib)
394+
link_directories(${PROJECT_BINARY_DIR}/lib)
395395

396396
set(LIB_NAME $ENV{PULSAR_LIBRARY_NAME})
397397
if (NOT LIB_NAME)
@@ -421,26 +421,26 @@ if (BUILD_WIRESHARK)
421421
endif()
422422

423423
find_package(ClangTools)
424-
set(BUILD_SUPPORT_DIR "${CMAKE_SOURCE_DIR}/build-support")
424+
set(BUILD_SUPPORT_DIR "${PROJECT_SOURCE_DIR}/build-support")
425425
add_custom_target(format ${BUILD_SUPPORT_DIR}/run_clang_format.py
426426
${CLANG_FORMAT_BIN}
427427
0
428428
${BUILD_SUPPORT_DIR}/clang_format_exclusions.txt
429-
${CMAKE_SOURCE_DIR}/lib
430-
${CMAKE_SOURCE_DIR}/perf
431-
${CMAKE_SOURCE_DIR}/examples
432-
${CMAKE_SOURCE_DIR}/tests
433-
${CMAKE_SOURCE_DIR}/include
434-
${CMAKE_SOURCE_DIR}/wireshark)
429+
${PROJECT_SOURCE_DIR}/lib
430+
${PROJECT_SOURCE_DIR}/perf
431+
${PROJECT_SOURCE_DIR}/examples
432+
${PROJECT_SOURCE_DIR}/tests
433+
${PROJECT_SOURCE_DIR}/include
434+
${PROJECT_SOURCE_DIR}/wireshark)
435435

436436
# `make check-format` option (for CI test)
437437
add_custom_target(check-format ${BUILD_SUPPORT_DIR}/run_clang_format.py
438438
${CLANG_FORMAT_BIN}
439439
1
440440
${BUILD_SUPPORT_DIR}/clang_format_exclusions.txt
441-
${CMAKE_SOURCE_DIR}/lib
442-
${CMAKE_SOURCE_DIR}/perf
443-
${CMAKE_SOURCE_DIR}/examples
444-
${CMAKE_SOURCE_DIR}/tests
445-
${CMAKE_SOURCE_DIR}/include
446-
${CMAKE_SOURCE_DIR}/wireshark)
441+
${PROJECT_SOURCE_DIR}/lib
442+
${PROJECT_SOURCE_DIR}/perf
443+
${PROJECT_SOURCE_DIR}/examples
444+
${PROJECT_SOURCE_DIR}/tests
445+
${PROJECT_SOURCE_DIR}/include
446+
${PROJECT_SOURCE_DIR}/wireshark)

tests/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,6 @@ file(GLOB TEST_SOURCES *.cc c/*.cc)
5656

5757
add_executable(pulsar-tests ${TEST_SOURCES} ${PROTO_SOURCES})
5858

59-
target_include_directories(pulsar-tests PRIVATE ${CMAKE_SOURCE_DIR}/lib ${AUTOGEN_DIR}/lib)
59+
target_include_directories(pulsar-tests PRIVATE ${PROJECT_SOURCE_DIR}/lib ${AUTOGEN_DIR}/lib)
6060

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

0 commit comments

Comments
 (0)