63 lines
2 KiB
CMake
63 lines
2 KiB
CMake
# Project Setup
|
|
cmake_minimum_required(VERSION 3.21)
|
|
project(
|
|
projet
|
|
VERSION 0.0.1
|
|
DESCRIPTION "api for etheryo blog"
|
|
HOMEPAGE_URL "https://www.etheryo.fr/"
|
|
LANGUAGES CXX C
|
|
)
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
set(TARGET app)
|
|
|
|
# CPM Setup
|
|
set(CPM_DOWNLOAD_VERSION 0.38.7)
|
|
set(CPM_DOWNLOAD_LOCATION "${CMAKE_BINARY_DIR}/cmake/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
|
|
if(NOT (EXISTS ${CPM_DOWNLOAD_LOCATION}))
|
|
message(STATUS "Downloading CPM.cmake")
|
|
file(DOWNLOAD https://github.com/TheLartians/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake ${CPM_DOWNLOAD_LOCATION})
|
|
endif()
|
|
include(${CPM_DOWNLOAD_LOCATION})
|
|
|
|
# Source files
|
|
set(SOURCES "${PROJECT_SOURCE_DIR}/src")
|
|
add_executable(${TARGET}
|
|
${SOURCES}/dotenv.cpp
|
|
${SOURCES}/json.cpp
|
|
${SOURCES}/main.cpp
|
|
)
|
|
|
|
# Add Dependencies
|
|
find_package(PkgConfig REQUIRED)
|
|
pkg_check_modules(LIBPQXX REQUIRED libpqxx)
|
|
find_package(Boost 1.64 COMPONENTS system date_time REQUIRED)
|
|
|
|
# Crow CPP
|
|
CPMAddPackage(
|
|
NAME crowcpp
|
|
GITHUB_REPOSITORY CrowCpp/Crow
|
|
GIT_TAG v1.1.0
|
|
)
|
|
if(crowcpp_ADDED)
|
|
target_include_directories(${TARGET} PUBLIC "${crowcpp_SOURCE_DIR}/include")
|
|
endif()
|
|
|
|
# Copying the ressource folder to the build
|
|
add_custom_target(CopyRes ALL
|
|
COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/res
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/res
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
|
${CMAKE_SOURCE_DIR}/res
|
|
${CMAKE_BINARY_DIR}/res
|
|
COMMENT "Copying and deleting resources to build directory"
|
|
VERBATIM
|
|
)
|
|
add_dependencies(${TARGET} CopyRes)
|
|
|
|
# Including the include folder
|
|
target_include_directories(${TARGET} PUBLIC "${PROJECT_SOURCE_DIR}/include" ${LIBPQXX_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS})
|
|
target_link_libraries(${TARGET} ${LIBPQXX_LIBRARIES} Boost::system Boost::date_time)
|
|
# Compilation only on Linux
|
|
target_compile_options(${TARGET} PUBLIC -Wall -Wextra -Wpedantic -Werror -Wno-unused-but-set-variable)
|