cmake_minimum_required(VERSION 3.8)
PROJECT(blogcpp CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_BUILD_TYPE RELEASE)
set(CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR})
######################################################################
# OS
######################################################################
IF (UNIX)
ADD_DEFINITIONS(-DUNIX)
############################################################################
# CPP FLAGS
############################################################################
SET(CMAKE_CXX_FLAGS "-Wall -Wno-deprecated-declarations ${CMAKE_CXX_FLAGS} -Werror=switch")
############################################################################
# RPATH
# https://cmake.org/Wiki/CMake_RPATH_handling
############################################################################
# use, i.e. don't skip the full RPATH for the build tree
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
# when building, don't use the install RPATH already
# (but later on when installing)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
SET(CMAKE_INSTALL_RPATH "${TARGET_LIB_PATH}")
# add the automatically determined parts of the RPATH
# which point to directories outside the build tree to the install RPATH
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
# the RPATH to be used when installing, but only if it's not a system directory
LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${TARGET_LIB_PATH}" isSystemDir)
IF("${isSystemDir}" STREQUAL "-1")
SET(CMAKE_INSTALL_RPATH "${TARGET_LIB_PATH}")
ENDIF("${isSystemDir}" STREQUAL "-1")
IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
ADD_DEFINITIONS(-DLINUX)
SET(LINUX TRUE)
SET(FREEBSD FALSE)
SET(DARWIN FALSE)
ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
IF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
ADD_DEFINITIONS(-DFREEBSD)
SET(LINUX FALSE)
SET(FREEBSD TRUE)
SET(DARWIN FALSE)
ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
ADD_DEFINITIONS(-DDARWIN)
SET(LINUX FALSE)
SET(FREEBSD FALSE)
SET(DARWIN TRUE)
ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
ENDIF (UNIX)
IF (WIN32)
IF (MSVC)
ADD_DEFINITIONS(-D_WIN32_WINNT=0x0501)
############################################################################
# CPP FLAGS
############################################################################
SET(LIB_CXX_FLAGS "")
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
############################################################################
# PATHS for targets
############################################################################
SET(TARGET_BIN_PATH "${CMAKE_INSTALL_PREFIX}/")
SET(TARGET_LIB_PATH "${CMAKE_INSTALL_PREFIX}/")
ELSE (MSVC)
ADD_DEFINITIONS(-D_WIN32_WINNT=0x0501)
############################################################################
# CPP FLAGS
############################################################################
SET(CMAKE_CXX_FLAGS "--std=c++14 -Wall -Wno-deprecated-declarations ${CMAKE_CXX_FLAGS} -Werror=switch")
SET(LIB_CXX_FLAGS "")
ADD_DEFINITIONS(-DNOEXCEPT=noexcept)
############################################################################
# PATHS for targets
############################################################################
SET(TARGET_BIN_PATH "${CMAKE_INSTALL_PREFIX}/")
SET(TARGET_LIB_PATH "${CMAKE_INSTALL_PREFIX}/")
ENDIF (MSVC)
ENDIF (WIN32)
# Downloading the Conan wrapper if required:
if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake")
message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan")
file(DOWNLOAD "https://github.com/conan-io/cmake-conan/raw/v0.15/conan.cmake"
"${CMAKE_BINARY_DIR}/conan.cmake"
TLS_VERIFY ON)
endif()
include(${CMAKE_BINARY_DIR}/conan.cmake)
# Fetching dependencies:
conan_cmake_run(CONANFILE conanfile.txt
BASIC_SETUP CMAKE_TARGETS
BUILD missing)
add_subdirectory(src)