59 lines
3.4 KiB
CMake
59 lines
3.4 KiB
CMake
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()
|