96 lines
2.9 KiB
CMake
96 lines
2.9 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
|
|
project(visione-backend VERSION 0.1.0 LANGUAGES CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
find_package(Python3 COMPONENTS Interpreter REQUIRED)
|
|
|
|
option(USE_SYSTEM_DROGON "Use an installed Drogon package instead of CPM" OFF)
|
|
|
|
if (USE_SYSTEM_DROGON)
|
|
find_package(Drogon CONFIG REQUIRED)
|
|
else ()
|
|
set(CPM_SOURCE_CACHE "${CMAKE_CURRENT_SOURCE_DIR}/.cache/cpm" CACHE PATH "CPM dependency cache")
|
|
include(cmake/CPM.cmake)
|
|
|
|
CPMAddPackage(
|
|
NAME Drogon
|
|
GITHUB_REPOSITORY drogonframework/drogon
|
|
GIT_TAG v1.9.13
|
|
OPTIONS
|
|
"BUILD_CTL OFF"
|
|
"BUILD_EXAMPLES OFF"
|
|
"BUILD_ORM ON"
|
|
"BUILD_MYSQL ON"
|
|
"BUILD_POSTGRESQL OFF"
|
|
"BUILD_REDIS OFF"
|
|
"BUILD_SQLITE OFF"
|
|
"BUILD_BROTLI OFF"
|
|
"BUILD_YAML_CONFIG OFF"
|
|
"BUILD_TESTING OFF"
|
|
)
|
|
endif ()
|
|
|
|
set(APP_SOURCES
|
|
${CMAKE_CURRENT_SOURCE_DIR}/controllers/ApiController.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/controllers/AdminController.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/controllers/AuthController.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/controllers/ReportController.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/common/Auth.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/common/Cors.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/common/Crypto.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/common/Email.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/common/GeoJson.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/common/Http.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/common/Validation.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/plugins/RequestLogger.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/repositories/MigrationRunner.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/repositories/Sql.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/services/AdminService.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/services/AuthService.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/services/ReportService.cc
|
|
)
|
|
|
|
add_executable(${PROJECT_NAME}
|
|
main.cc
|
|
${APP_SOURCES}
|
|
)
|
|
|
|
target_include_directories(${PROJECT_NAME}
|
|
PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
)
|
|
|
|
target_link_libraries(${PROJECT_NAME}
|
|
PRIVATE
|
|
Drogon::Drogon
|
|
)
|
|
|
|
file(GLOB CONTROLLER_HEADERS CONFIGURE_DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/controllers/*.h
|
|
)
|
|
set(OPENAPI_OUTPUT ${CMAKE_BINARY_DIR}/openapi/visione.openapi.json)
|
|
add_custom_command(
|
|
OUTPUT ${OPENAPI_OUTPUT}
|
|
COMMAND ${Python3_EXECUTABLE}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/generate_openapi.py
|
|
--controllers ${CMAKE_CURRENT_SOURCE_DIR}/controllers
|
|
--out ${OPENAPI_OUTPUT}
|
|
--title "Visione API"
|
|
--version ${PROJECT_VERSION}
|
|
DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/generate_openapi.py
|
|
${CONTROLLER_HEADERS}
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
VERBATIM
|
|
)
|
|
add_custom_target(openapi ALL DEPENDS ${OPENAPI_OUTPUT})
|
|
add_dependencies(${PROJECT_NAME} openapi)
|
|
|
|
enable_testing()
|
|
add_subdirectory(test)
|