cmake_minimum_required(VERSION 4.1) project(Quercus VERSION 0.1.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) include(FetchContent) #Make Libraries Available # 1. nlohmann/json FetchContent_Declare(json URL https://github.com/nlohmann/json/archive/refs/tags/v3.12.0.tar.gz) FetchContent_MakeAvailable(json) # 2. Boost Asio FetchContent_Declare( boost_asio URL https://github.com/chriskohlhoff/asio/archive/refs/heads/master.tar.gz ) FetchContent_MakeAvailable(boost_asio) # 3. libsecp256k1 FetchContent_Declare(secp256k1 GIT_REPOSITORY https://github.com/bitcoin-core/secp256k1.git GIT_TAG v0.7.1 ) FetchContent_MakeAvailable(secp256k1) # 4. RocksDB ( FetchContent_Declare(rocksdb GIT_REPOSITORY https://github.com/facebook/rocksdb.git GIT_TAG v10.10.1 ) set(WITH_TESTS OFF CACHE BOOL "" FORCE) set(WITH_GFLAGS OFF CACHE BOOL "" FORCE) FetchContent_MakeAvailable(rocksdb) # 5. OpenSSL FetchContent_Declare( openssl URL https://github.com/openssl/openssl/archive/refs/tags/openssl-3.6.1.tar.gz ) FetchContent_MakeAvailable(openssl) include_directories(include) #scan all cpp files under /src folder and add_executable file(GLOB_RECURSE QUERCUS_SOURCES "src/*.cpp" "src/*/*.cpp" "src/*/*/*.cpp" "src/*/*/*/*.cpp" ) add_executable(Quercus ${QUERCUS_SOURCES}) target_include_directories(Quercus PRIVATE include ${asio_lib_SOURCE_DIR}/include ${json_SOURCE_DIR}/include ${secp256k1_SOURCE_DIR}/include ${rocksdb_SOURCE_DIR}/include ) find_package(Threads REQUIRED) target_link_libraries(Quercus PRIVATE secp256k1 rocksdb OpenSSL::Crypto OpenSSL::SSL asio Threads::Threads ${CMAKE_DL_LIBS} )