oatpp-swagger/CMakeLists.txt
2019-08-12 03:25:29 +03:00

114 lines
4.3 KiB
CMake

cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
###################################################################################################
## These variables are passed to oatpp-module-install.cmake script
## use these variables to configure module installation
set(OATPP_THIS_MODULE_NAME oatpp-swagger) ## name of the module (also name of folders in installation dirs)
set(OATPP_THIS_MODULE_VERSION "0.19.7") ## version of the module (also sufix of folders in installation dirs)
set(OATPP_THIS_MODULE_LIBRARIES oatpp-swagger) ## list of libraries to find when find_package is called
set(OATPP_THIS_MODULE_TARGETS oatpp-swagger) ## list of targets to install
set(OATPP_THIS_MODULE_DIRECTORIES oatpp-swagger) ## list of directories to install
###################################################################################################
project(${OATPP_THIS_MODULE_NAME}
VERSION ${OATPP_THIS_MODULE_VERSION}
LANGUAGES CXX
)
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
option(OATPP_DIR_SRC "Path to oatpp module directory (sources)")
option(OATPP_DIR_LIB "Path to directory with liboatpp (directory containing ex: liboatpp.so or liboatpp.dynlib)")
option(OATPP_BUILD_TESTS "Build tests for this module" ON)
option(OATPP_INSTALL "Install module binaries" ON)
set(OATPP_MODULES_LOCATION "INSTALLED" CACHE STRING "Location where to find oatpp modules. can be [INSTALLED|EXTERNAL|CUSTOM]")
###################################################################################################
## get oatpp main module in specified location
set(OATPP_MODULES_LOCATION_INSTALLED INSTALLED)
set(OATPP_MODULES_LOCATION_EXTERNAL EXTERNAL)
set(OATPP_MODULES_LOCATION_CUSTOM CUSTOM)
if(OATPP_MODULES_LOCATION STREQUAL OATPP_MODULES_LOCATION_INSTALLED)
message("Finding oatpp in location=INSTALLED")
find_package(oatpp ${OATPP_THIS_MODULE_VERSION} REQUIRED)
get_target_property(OATPP_INCLUDE oatpp::oatpp INTERFACE_INCLUDE_DIRECTORIES)
message("OATPP_INCLUDE=${OATPP_INCLUDE}")
get_target_property(OATPP_TEST_INCLUDE oatpp::oatpp-test INTERFACE_INCLUDE_DIRECTORIES)
message("OATPP_TEST_INCLUDE=${OATPP_TEST_INCLUDE}")
elseif(OATPP_MODULES_LOCATION STREQUAL OATPP_MODULES_LOCATION_EXTERNAL)
message("Finding oatpp in location=EXTERNAL")
include(ExternalProject)
set(MODULE_WAIT_DEPS ON)
set(LIB_OATPP_EXTERNAL "lib_oatpp_external")
ExternalProject_Add(${LIB_OATPP_EXTERNAL}
GIT_REPOSITORY "https://github.com/oatpp/oatpp.git"
GIT_TAG origin/master
CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DOATPP_INSTALL=OFF -DOATPP_BUILD_TESTS=OFF
INSTALL_COMMAND cmake -E echo "SKIP INSTALL '${LIB_OATPP_EXTERNAL}'"
)
ExternalProject_Get_Property(${LIB_OATPP_EXTERNAL} BINARY_DIR)
set(OATPP_DIR_LIB ${BINARY_DIR}/src)
ExternalProject_Get_Property(${LIB_OATPP_EXTERNAL} SOURCE_DIR)
set(OATPP_DIR_SRC ${SOURCE_DIR}/src)
message("OATPP_DIR_SRC --> '${OATPP_DIR_SRC}'")
message("OATPP_DIR_LIB --> '${OATPP_DIR_LIB}'")
elseif(OATPP_MODULES_LOCATION STREQUAL OATPP_MODULES_LOCATION_CUSTOM)
message("Finding oatpp in location=CUSTOM")
message("OATPP_DIR_SRC --> '${OATPP_DIR_SRC}'")
message("OATPP_DIR_LIB --> '${OATPP_DIR_LIB}'")
else()
message("FATAL_ERROR Unknown location to find oatpp '${OATPP_MODULES_LOCATION}'")
endif()
if(OATPP_DIR_LIB)
link_directories(${OATPP_DIR_LIB})
endif()
###################################################################################################
## get dependencies
message("\n############################################################################")
message("## ${OATPP_THIS_MODULE_NAME} module. Resolving dependencies...\n")
## TODO find dependecies here (if some)
message("\n############################################################################\n")
###################################################################################################
## define targets
if (MSVC)
# Add compilerswitch to allow pointer-to-members
# https://docs.microsoft.com/en-us/cpp/preprocessor/pointers-to-members?view=vs-2019
add_compile_options(/vmg /wd4996)
endif(MSVC)
include(cmake/module-utils.cmake)
add_subdirectory("src")
if(OATPP_BUILD_TESTS)
enable_testing()
add_subdirectory("test")
endif()