edit | blame | history | raw
cmake_minimum_required(VERSION 3.10)
project(RocksDBWrapper)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED True)

include_directories(${CMAKE_SOURCE_DIR}/external/tser/include)

# Add the source files
set(SOURCES
    RocksDBWrapper.cpp
)

# Find RocksDB
find_package(RocksDB REQUIRED)

# Create the library target
add_library(RocksDBWrapper STATIC ${SOURCES})

# Link the RocksDB library
target_link_libraries(RocksDBWrapper RocksDB::rocksdb)

# Add the executable for testing
add_executable(RocksDBWrapperExecutable main.cpp)
target_link_libraries(RocksDBWrapperExecutable RocksDBWrapper)

# Optionally add tests
option(BUILD_TESTS "Build tests" OFF)

if (BUILD_TESTS)
    include(FetchContent)
    FetchContent_Declare(
        googletest
        URL https://github.com/google/googletest/archive/refs/tags/release-1.11.0.zip
    )
    FetchContent_MakeAvailable(googletest)

    enable_testing()

    add_executable(RocksDBWrapperTest test_RocksDBWrapper.cpp)
    target_link_libraries(RocksDBWrapperTest RocksDBWrapper gtest gtest_main)

    add_test(NAME RocksDBWrapperTest COMMAND RocksDBWrapperTest)
endif()