IAP GITLAB

Skip to content
Snippets Groups Projects
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)