set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) set(adminive_backend_root "${CMAKE_CURRENT_LIST_DIR}") set(adminive_include_dir "${adminive_backend_root}/include") set(adminive_third_party_include_dir "${adminive_backend_root}/third_party/include") set(adminive_frontend_dist_dir "${adminive_backend_root}/../frontend_dist") file(TO_CMAKE_PATH "${adminive_frontend_dist_dir}" adminive_frontend_dist_dir) add_library(Adminive INTERFACE) if(MSVC) target_compile_options(Adminive INTERFACE /utf-8 /permissive- /Zc:__cplusplus) endif() add_library(Adminive::Adminive ALIAS Adminive) add_library(Adminive::Core ALIAS Adminive) target_include_directories(Adminive INTERFACE "${adminive_include_dir}") target_compile_features(Adminive INTERFACE cxx_std_20) add_library(Adminive_Http INTERFACE) add_library(Adminive::Http ALIAS Adminive_Http) target_link_libraries(Adminive_Http INTERFACE Adminive::Core) add_library(Adminive_Httplib INTERFACE) add_library(Adminive::Httplib ALIAS Adminive_Httplib) target_link_libraries(Adminive_Httplib INTERFACE Adminive::Http) target_include_directories(Adminive_Httplib INTERFACE "${adminive_third_party_include_dir}") if(WIN32) target_compile_definitions(Adminive_Httplib INTERFACE WINVER=0x0A00 _WIN32_WINNT=0x0A00) target_link_libraries(Adminive_Httplib INTERFACE ws2_32) endif() add_library(Adminive_Drogon INTERFACE) add_library(Adminive::Drogon ALIAS Adminive_Drogon) target_link_libraries(Adminive_Drogon INTERFACE Adminive::Http) if(TARGET Drogon::Drogon) target_link_libraries(Adminive_Drogon INTERFACE Drogon::Drogon) elseif(TARGET drogon) target_link_libraries(Adminive_Drogon INTERFACE drogon) endif() add_library(Adminive_Default INTERFACE) add_library(Adminive::Default ALIAS Adminive_Default) target_link_libraries(Adminive_Default INTERFACE Adminive::Httplib) target_include_directories(Adminive_Default INTERFACE "${adminive_third_party_include_dir}") add_executable(Adminive_Server "${adminive_backend_root}/src/main.cpp") target_compile_definitions(Adminive_Server PRIVATE ADMINIVE_FRONTEND_DIST_DIR="${adminive_frontend_dist_dir}") target_link_libraries(Adminive_Server PRIVATE Adminive::Default) if(BUILD_TESTING) add_executable(Adminive_Test "${adminive_backend_root}/tests/test.cpp") target_include_directories(Adminive_Test PRIVATE "${adminive_backend_root}/src") target_link_libraries(Adminive_Test PRIVATE Adminive::Default) add_test(NAME Adminive_Test COMMAND Adminive_Test) add_executable(Adminive_Core_Adapter_Test "${adminive_backend_root}/tests/core_adapter_test.cpp") target_link_libraries(Adminive_Core_Adapter_Test PRIVATE Adminive::Core) add_test(NAME Adminive_Core_Adapter_Test COMMAND Adminive_Core_Adapter_Test) add_executable(Adminive_Advanced_Adapter_Test "${adminive_backend_root}/tests/advanced_adapter_test.cpp") target_link_libraries(Adminive_Advanced_Adapter_Test PRIVATE Adminive::Default) add_test(NAME Adminive_Advanced_Adapter_Test COMMAND Adminive_Advanced_Adapter_Test) add_executable(Adminive_Drogon_Adapter_Test "${adminive_backend_root}/tests/drogon_adapter_test.cpp") target_include_directories(Adminive_Drogon_Adapter_Test BEFORE PRIVATE "${adminive_backend_root}/tests/fake_drogon") target_link_libraries(Adminive_Drogon_Adapter_Test PRIVATE Adminive::Default) add_test(NAME Adminive_Drogon_Adapter_Test COMMAND Adminive_Drogon_Adapter_Test) endif()