...
This commit is contained in:
117
CMakeLists.txt
117
CMakeLists.txt
@@ -4,7 +4,7 @@ project(ADC LANGUAGES CXX)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}")
|
||||
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD 23)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
# set(CMAKE_BUILD_TYPE Release)
|
||||
|
||||
@@ -28,11 +28,10 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
# message(WARNING "You are using an unsupported compiler! Compilation has only been tested with Clang and GCC.")
|
||||
# endif()
|
||||
|
||||
|
||||
|
||||
set(ADC_COMMON_HEADERS
|
||||
common/adc_traits.h
|
||||
common/adc_utils.h
|
||||
common/adc_serialization.h
|
||||
# common/adc_value_holder.h
|
||||
# common/adc_value.h
|
||||
# common/adc_valholder.h
|
||||
@@ -40,12 +39,11 @@ set(ADC_COMMON_HEADERS
|
||||
|
||||
set(ADC_DEVICE_HEADERS
|
||||
device/adc_device_attribute.h
|
||||
device/adc_device_command.h
|
||||
device/adc_device_command.h
|
||||
device/adc_device.h
|
||||
device/adc_device_concepts.h
|
||||
)
|
||||
|
||||
|
||||
set(ADC_NETWORK_HEADERS
|
||||
# net/adc_netmsg.h
|
||||
# net/adc_netmessage.h
|
||||
@@ -60,76 +58,82 @@ set(ADC_NETWORK_HEADERS
|
||||
net/adc_device_netclient.h
|
||||
)
|
||||
|
||||
|
||||
option(ASIO_LIBRARY "Use of ASIO library for networking implementation" ON)
|
||||
|
||||
if (ASIO_LIBRARY)
|
||||
if(ASIO_LIBRARY)
|
||||
find_package(ASIO REQUIRED)
|
||||
|
||||
set(ADC_NETWORK_HEADERS ${ADC_NETWORK_HEADERS}
|
||||
set(ADC_NETWORK_HEADERS
|
||||
${ADC_NETWORK_HEADERS}
|
||||
net/asio/adc_netservice_asio.h
|
||||
net/asio/adc_device_netserver_asio.h
|
||||
)
|
||||
|
||||
add_compile_definitions(PUBLIC USE_ASIO_LIBRARY)
|
||||
|
||||
option(OPENSSL_LIBRARY "Use openssl library for related ASIO-based implementation" ON)
|
||||
if (OPENSSL_LIBRARY)
|
||||
option(
|
||||
OPENSSL_LIBRARY
|
||||
"Use openssl library for related ASIO-based implementation"
|
||||
ON
|
||||
)
|
||||
if(OPENSSL_LIBRARY)
|
||||
find_package(OpenSSL REQUIRED)
|
||||
add_compile_definitions(PUBLIC USE_OPENSSL_WITH_ASIO)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
option(SPDLOG_LIBRARY "Use of SPDLOG library for logging" ON)
|
||||
|
||||
if (SPDLOG_LIBRARY)
|
||||
if(SPDLOG_LIBRARY)
|
||||
find_package(spdlog REQUIRED)
|
||||
find_package(fmt REQUIRED)
|
||||
|
||||
set(ADC_COMMON_HEADERS ${ADC_COMMON_HEADERS}
|
||||
common/adc_spdlog.h
|
||||
)
|
||||
set(ADC_COMMON_HEADERS ${ADC_COMMON_HEADERS} common/adc_spdlog.h)
|
||||
|
||||
set(ADC_NETWORK_HEADERS ${ADC_NETWORK_HEADERS}
|
||||
net/adc_netserver_spdlog.h
|
||||
)
|
||||
set(ADC_NETWORK_HEADERS ${ADC_NETWORK_HEADERS} net/adc_netserver_spdlog.h)
|
||||
|
||||
add_compile_definitions(PUBLIC USE_SPDLOG_LIBRARY)
|
||||
endif()
|
||||
|
||||
option(
|
||||
USE_UWEBSOCKET
|
||||
"Use of uWebsocket library for websocket-related staff"
|
||||
ON
|
||||
)
|
||||
|
||||
|
||||
option(USE_UWEBSOCKET "Use of uWebsocket library for websocket-related staff" ON)
|
||||
|
||||
if (USE_UWEBSOCKET)
|
||||
if(USE_UWEBSOCKET)
|
||||
include(FetchContent)
|
||||
include(ExternalProject)
|
||||
|
||||
FetchContent_Declare(uwebsockets
|
||||
SOURCE_DIR ${CMAKE_BINARY_DIR}/uWebsockets
|
||||
BINARY_DIR ${CMAKE_BINARY_DIR}
|
||||
FetchContent_Declare(
|
||||
uwebsockets
|
||||
SOURCE_DIR
|
||||
${CMAKE_BINARY_DIR}/uWebsockets
|
||||
BINARY_DIR
|
||||
${CMAKE_BINARY_DIR}
|
||||
GIT_REPOSITORY "https://github.com/uNetworking/uWebSockets.git"
|
||||
GIT_TAG "v20.67.0"
|
||||
GIT_SHALLOW TRUE
|
||||
GIT_SUBMODULES ""
|
||||
GIT_PROGRESS TRUE
|
||||
)
|
||||
)
|
||||
FetchContent_MakeAvailable(uwebsockets)
|
||||
FetchContent_GetProperties(uwebsockets SOURCE_DIR uwebsockets_SOURCE_DIR)
|
||||
|
||||
set(UWEBSOCKETS_INCLUDE_DIR ${uwebsockets_SOURCE_DIR}/src)
|
||||
|
||||
FetchContent_Declare(usockets
|
||||
SOURCE_DIR ${uwebsockets_SOURCE_DIR}/uSockets
|
||||
BINARY_DIR ${CMAKE_BINARY_DIR}
|
||||
FetchContent_Declare(
|
||||
usockets
|
||||
SOURCE_DIR
|
||||
${uwebsockets_SOURCE_DIR}/uSockets
|
||||
BINARY_DIR
|
||||
${CMAKE_BINARY_DIR}
|
||||
GIT_REPOSITORY "https://github.com/uNetworking/uSockets.git"
|
||||
GIT_TAG "v0.8.8"
|
||||
GIT_SHALLOW TRUE
|
||||
GIT_SUBMODULES ""
|
||||
GIT_PROGRESS TRUE
|
||||
)
|
||||
)
|
||||
FetchContent_MakeAvailable(usockets)
|
||||
FetchContent_GetProperties(usockets SOURCE_DIR usockets_SOURCE_DIR)
|
||||
|
||||
@@ -137,7 +141,8 @@ if (USE_UWEBSOCKET)
|
||||
|
||||
include(ExternalProject)
|
||||
|
||||
ExternalProject_Add(LIBUS
|
||||
ExternalProject_Add(
|
||||
LIBUS
|
||||
SOURCE_DIR ${usockets_SOURCE_DIR}
|
||||
PREFIX ${CMAKE_BINARY_DIR}/_deps
|
||||
BUILD_IN_SOURCE TRUE
|
||||
@@ -148,17 +153,19 @@ if (USE_UWEBSOCKET)
|
||||
)
|
||||
|
||||
add_library(LIBUS_LIB STATIC IMPORTED)
|
||||
set_target_properties(LIBUS_LIB PROPERTIES IMPORTED_LOCATION ${usockets_SOURCE_DIR}/uSockets.a)
|
||||
set_target_properties(
|
||||
LIBUS_LIB
|
||||
PROPERTIES IMPORTED_LOCATION ${usockets_SOURCE_DIR}/uSockets.a
|
||||
)
|
||||
get_target_property(LIBUS_LIB_PATH LIBUS_LIB IMPORTED_LOCATION)
|
||||
|
||||
include_directories(${USOCKETS_INCLUDE_DIR})
|
||||
include_directories(${UWEBSOCKETS_INCLUDE_DIR})
|
||||
|
||||
endif(USE_UWEBSOCKET)
|
||||
|
||||
option(BUILD_TESTS "Build tests" ON)
|
||||
|
||||
if (BUILD_TESTS)
|
||||
if(BUILD_TESTS)
|
||||
find_package(doctest)
|
||||
|
||||
# set(VALUEHOLDER_TEST_APP adc_valueholder_test)
|
||||
@@ -175,21 +182,34 @@ if (BUILD_TESTS)
|
||||
|
||||
set(NETSERVICE_TEST_APP adc_netservice_test)
|
||||
add_executable(${NETSERVICE_TEST_APP} tests/adc_netservice_test.cpp)
|
||||
if (OPENSSL_LIBRARY)
|
||||
target_link_libraries(${NETSERVICE_TEST_APP} OpenSSL::SSL OpenSSL::Crypto)
|
||||
if(OPENSSL_LIBRARY)
|
||||
target_link_libraries(
|
||||
${NETSERVICE_TEST_APP}
|
||||
OpenSSL::SSL
|
||||
OpenSSL::Crypto
|
||||
)
|
||||
endif()
|
||||
|
||||
if (ASIO_LIBRARY)
|
||||
if(ASIO_LIBRARY)
|
||||
find_package(cxxopts CONFIG)
|
||||
set(ASIO_NETSERVER_TEST_APP adc_asio_netserver_test)
|
||||
add_executable(${ASIO_NETSERVER_TEST_APP} tests/adc_asio_netserver_test.cpp)
|
||||
target_link_libraries(${ASIO_NETSERVER_TEST_APP} PUBLIC Threads::Threads cxxopts::cxxopts)
|
||||
if (OPENSSL_LIBRARY)
|
||||
target_link_libraries(${ASIO_NETSERVER_TEST_APP} PUBLIC OpenSSL::SSL OpenSSL::Crypto)
|
||||
add_executable(
|
||||
${ASIO_NETSERVER_TEST_APP}
|
||||
tests/adc_asio_netserver_test.cpp
|
||||
)
|
||||
target_link_libraries(
|
||||
${ASIO_NETSERVER_TEST_APP}
|
||||
PUBLIC Threads::Threads cxxopts::cxxopts
|
||||
)
|
||||
if(OPENSSL_LIBRARY)
|
||||
target_link_libraries(
|
||||
${ASIO_NETSERVER_TEST_APP}
|
||||
PUBLIC OpenSSL::SSL OpenSSL::Crypto
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (NOT doctest_FOUND)
|
||||
if(NOT doctest_FOUND)
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(
|
||||
doctest
|
||||
@@ -207,7 +227,7 @@ if (BUILD_TESTS)
|
||||
add_test(NETMSG_TEST ${NETMSG_TEST_APP})
|
||||
|
||||
add_test(ASIO_NETSRV_TEST ${ASIO_NETSERVER_TEST_APP})
|
||||
if (SPDLOG_LIBRARY)
|
||||
if(SPDLOG_LIBRARY)
|
||||
target_link_libraries(${ASIO_NETSERVER_TEST_APP} PRIVATE fmt::fmt)
|
||||
endif()
|
||||
|
||||
@@ -216,7 +236,13 @@ endif(BUILD_TESTS)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
|
||||
add_library(${PROJECT_NAME} INTERFACE ${ADC_COMMON_HEADERS} ${ADC_DEVICE_HEADERS} ${ADC_NETWORK_HEADERS})
|
||||
add_library(
|
||||
${PROJECT_NAME}
|
||||
INTERFACE
|
||||
${ADC_COMMON_HEADERS}
|
||||
${ADC_DEVICE_HEADERS}
|
||||
${ADC_NETWORK_HEADERS}
|
||||
)
|
||||
target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_20)
|
||||
# target_link_libraries(${PROJECT_NAME} INTERFACE ASIO::ASIO)
|
||||
target_include_directories(
|
||||
@@ -225,4 +251,3 @@ target_include_directories(
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user