diff --git a/CMakeLists.txt b/CMakeLists.txt index fb4f1b1..1bcfd47 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -96,6 +96,7 @@ if (APPLE AND NOT LINK_STATIC) else () set(LATEST_PROTOBUF FALSE) endif () +set(LATEST_PROTOBUF FALSE) if (NOT CMAKE_CXX_STANDARD) if (LATEST_PROTOBUF) @@ -157,14 +158,15 @@ if (LATEST_PROTOBUF) # Use Config mode to avoid FindProtobuf.cmake does not find the Abseil library find_package(Protobuf REQUIRED CONFIG) else () - find_package(Protobuf REQUIRED) + find_package(protobuf CONFIG REQUIRED) + set(Protobuf_LIBRARIES protobuf::libprotobuf) endif () message("Protobuf_INCLUDE_DIRS: " ${Protobuf_INCLUDE_DIRS}) message("Protobuf_LIBRARIES: " ${Protobuf_LIBRARIES}) # NOTE: CMake might not find curl and zlib on some platforms like Ubuntu, in this case, find them manually set(CURL_NO_CURL_CMAKE ON) -find_package(curl QUIET) +find_package(CURL REQUIRED) if (NOT CURL_FOUND) find_path(CURL_INCLUDE_DIRS NAMES curl/curl.h) find_library(CURL_LIBRARIES NAMES curl curllib libcurl_imp curllib_static libcurl) @@ -175,7 +177,7 @@ if (NOT CURL_INCLUDE_DIRS OR NOT CURL_LIBRARIES) message(FATAL_ERROR "Could not find libcurl") endif () -find_package(zlib QUIET) +find_package(ZLIB REQUIRED) if (NOT ZLIB_FOUND) find_path(ZLIB_INCLUDE_DIRS NAMES zlib.h) find_library(ZLIB_LIBRARIES NAMES z zlib zdll zlib1 zlibstatic) @@ -226,6 +228,17 @@ elseif (LINK_STATIC AND VCPKG_TRIPLET) if (LIB_SNAPPY) message(STATUS "Found Snappy library: ${LIB_SNAPPY}") endif () +elseif (1) + find_package(zstd CONFIG REQUIRED) + set(HAS_ZSTD 1) + set(LIB_ZSTD + $,zstd::libzstd_shared,zstd::libzstd_static>) + find_package(Snappy CONFIG REQUIRED) + set(HAS_SNAPPY 1) + set(LIB_SNAPPY Snappy::snappy) + if (MSVC) + find_package(dlfcn-win32 CONFIG REQUIRED) + endif () else() if (MSVC AND (${CMAKE_BUILD_TYPE} STREQUAL Debug)) find_library(LIB_ZSTD zstdd HINTS "${VCPKG_DEBUG_ROOT}/lib") diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 8bd9749..551ac0c 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -31,12 +31,14 @@ include_directories(${LIB_AUTOGEN_DIR}) # Using custom command for now set(PROTO_SOURCES ${LIB_AUTOGEN_DIR}/PulsarApi.pb.cc ${LIB_AUTOGEN_DIR}/PulsarApi.pb.h) set(PULSAR_SOURCES ${PULSAR_SOURCES} ${PROTO_SOURCES}) -ADD_CUSTOM_COMMAND( - OUTPUT ${PROTO_SOURCES} - COMMAND ${PROTOC_PATH} -I ../proto ../proto/PulsarApi.proto --cpp_out=${LIB_AUTOGEN_DIR} - DEPENDS - ../proto/PulsarApi.proto - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + +add_library(proto-objects OBJECT "${CMAKE_SOURCE_DIR}/proto/PulsarApi.proto") +target_link_libraries(proto-objects PUBLIC protobuf::libprotobuf) +target_include_directories(proto-objects PUBLIC "${LIB_AUTOGEN_DIR}") +protobuf_generate( + TARGET proto-objects + IMPORT_DIRS "${CMAKE_SOURCE_DIR}/proto" + PROTOC_OUT_DIR "${LIB_AUTOGEN_DIR}") set(LIBRARY_VERSION $ENV{PULSAR_LIBRARY_VERSION}) if (NOT LIBRARY_VERSION)