-
Antonio Augusto Alves Junior authoredAntonio Augusto Alves Junior authored
CMakeLists.txt 2.59 KiB
### CMakeList for RandomIterator examples and documentation
cmake_minimum_required(VERSION 3.2)
# project name
project(RandomIterator)
# warn user if system is not UNIX
if(NOT UNIX)
message(FATAL_ERROR "This is an unsupported system.")
endif()
#cmake path dir
SET(RANDOMITERATOR_CMAKE_DIR "${PROJECT_SOURCE_DIR}/cmake")
SET(CMAKE_MODULE_PATH "${RANDOMITERATOR_CMAKE_DIR}" ${CMAKE_MODULE_PATH})
SET(CMAKE_VERBOSE_MAKEFILE ON)
#check if compiler is C++17 compliant
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("--std=c++17" COMPILER_SUPPORTS_CXX17)
if(NOT COMPILER_SUPPORTS_CXX17)
message(FATAL "The compiler ${CMAKE_CXX_COMPILER} has no C++17 support. Please use a different C++ compiler.")
endif()
#compiler flags
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
MESSAGE(STATUS "Setting Clang flags")
set(CMAKE_CXX_FLAGS " --std=c++17 -W -march=native -fPIC -O4 -ldl" CACHE STRING "compile flags" FORCE)
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
MESSAGE(STATUS "Setting GCC flags")
set(CMAKE_CXX_FLAGS " --std=c++17 -W -march=native -fPIC -O4 -ldl" CACHE STRING "compile flags" FORCE)
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
MESSAGE(STATUS "Setting ICC flags")
set(CMAKE_CXX_FLAGS " --std=c++17 -W -march=native -fPIC -O4 -ldl" CACHE STRING "compile flags" FORCE)
endif()
#-----------------------
# get RandomIterator
find_package(RandomIterator REQUIRED)
include_directories(${RandomIterator_INCLUDE_DIR})
#-----------------------
# get TCLAP
find_package(TCLAP REQUIRED)
if(TCLAP_FOUND)
include_directories(${TCLAP_INCLUDE_DIR})
endif(TCLAP_FOUND)
set(CATCH_HEADER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/catch)
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
include_directories( ${CATCH_HEADER_DIR})
#+++++++++++++++++++++++++++
# EXAMPLES +
#+++++++++++++++++++++++++++
add_custom_target(examples)
include(${RANDOMITERATOR_CMAKE_DIR}/AddExample.cmake)
#add_subdirectory(examples/)
#+++++++++++++++++++++++++++
# TESTING +
#+++++++++++++++++++++++++++
enable_testing()
add_custom_target(tests)
add_subdirectory(tests)
#+++++++++++++++++++++++++++
# DOXYGEN +
#+++++++++++++++++++++++++++
find_package(Doxygen)
if(DOXYGEN_FOUND)
set(doxyfile_in ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in)
set(doxyfile ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile)
configure_file(${doxyfile_in} ${doxyfile} @ONLY)
add_custom_target(documentation
COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Doxygen"
VERBATIM)
endif(DOXYGEN_FOUND)