aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorLibravatar Michael J <37635304+buttercat1791@users.noreply.github.com>2024-03-03 11:56:37 -0600
committerLibravatar GitHub <noreply@github.com>2024-03-03 11:56:37 -0600
commit0d87b4053983ec8edaff5b73491b717866876586 (patch)
tree915e73bdcce6d54558f1aea4bcf2ca2813b1d5a4 /CMakeLists.txt
parentd02431d723f560f511aafa7e4b224046a4322021 (diff)
Create Nostr Service and Add Write Capabilities (#1)v0.0.1
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt78
1 files changed, 78 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..3d472c1
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,78 @@
+cmake_minimum_required(VERSION 3.14)
+project(NostrSDK VERSION 0.0.1)
+
+# Specify the C++ standard
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
+
+# Build the project.
+set(INCLUDE_DIR ./include)
+set(CLIENT_INCLUDE_DIR ./include/client)
+include_directories(${INCLUDE_DIR})
+include_directories(${CLIENT_INCLUDE_DIR})
+set(HEADERS
+ ${INCLUDE_DIR}/nostr.hpp
+ ${CLIENT_INCLUDE_DIR}/web_socket_client.hpp
+)
+
+set(SOURCE_DIR ./src)
+set(CLIENT_SOURCE_DIR ./src/client)
+set(SOURCES
+ ${SOURCE_DIR}/event.cpp
+ ${SOURCE_DIR}/nostr_service.cpp
+ ${CLIENT_SOURCE_DIR}/websocketpp_client.cpp
+)
+
+find_package(Boost REQUIRED COMPONENTS random system)
+find_package(nlohmann_json CONFIG REQUIRED)
+find_package(OpenSSL REQUIRED)
+find_package(plog CONFIG REQUIRED)
+find_package(websocketpp CONFIG REQUIRED)
+
+add_library(NostrSDK ${SOURCES} ${HEADERS})
+target_link_libraries(NostrSDK PRIVATE
+ Boost::random
+ Boost::system
+ nlohmann_json::nlohmann_json
+ OpenSSL::SSL
+ OpenSSL::Crypto
+ plog::plog
+ websocketpp::websocketpp
+)
+set_target_properties(NostrSDK PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS YES)
+
+# Build the tests.
+enable_testing()
+include(GoogleTest)
+
+include(FetchContent)
+FetchContent_Declare(
+ googletest
+ URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip
+)
+
+set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
+FetchContent_MakeAvailable(googletest)
+
+enable_testing()
+
+set(TEST_DIR ./test)
+set(TEST_SOURCES
+ ${TEST_DIR}/nostr_service_test.cpp
+)
+
+add_executable(NostrSDKTest ${TEST_SOURCES} ${HEADERS})
+target_link_libraries(NostrSDKTest PRIVATE
+ GTest::gmock
+ GTest::gtest
+ GTest::gtest_main
+ NostrSDK
+ plog::plog
+ websocketpp::websocketpp
+)
+set_target_properties(NostrSDKTest PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS YES)
+
+gtest_add_tests(TARGET NostrSDKTest)