Setting c++14 in CMake for Intel compiler

Viewed 607

I can set c++14 in CMake (3.18.0) for GNU compiler with CMAKE_CXX_FLAGS and also with target_compile_features. I like to use auto in lambda functions and this is why I want to use c++14. When I switch to Intel compiler (19.0.1.144 20181018), I get errors for using auto. I think this is because the c++14 feature is not properly set in CMake. How can I set c++14 for Intel compiler in CMake?

cmake_minimum_required(VERSION 3.18.0)

project(tailor CXX)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR})
set(METIS_TEST_RUNS ON)

find_package(MPI REQUIRED)
find_package(Boost REQUIRED COMPONENTS mpi serialization program_options log thread system filesystem)
find_package(Threads REQUIRED)
find_package(METIS REQUIRED)
find_package(MPFR REQUIRED)

set(tailor_VERSION_MAJOR 1)
set(tailor_VERSION_MINOR 0)
set(THREADS_PREFER_PTHREAD_FLAG ON)
#set(CMAKE_CXX_STANDARD 14)
#set(CMAKE_CXX_STANDARD_REQUIRED ON)
#set(CMAKE_CXX_EXTENSIONS OFF)
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -Wreturn-type -Wempty-body -std=c++14")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -Wreturn-type -Wempty-body")

ADD_DEFINITIONS(-DBOOST_LOG_DYN_LINK)
#ADD_DEFINITIONS(-DNDEBUG)

include_directories(include ${Boost_INCLUDE_DIRS} ${MPI_INCLUDE_PATH} ${METIS_INCLUDE_DIRS})
file(GLOB SOURCES "src/*.cpp")
add_library(tailor SHARED ${SOURCES})
target_link_libraries(tailor PUBLIC ${MPI_LIBRARIES} ${Boost_LIBRARIES} ${METIS_LIBRARIES} ${MPFR_LIBRARIES} ${GMP_LIBRARIES} Threads::Threads -lstdc++fs)

if(MPI_COMPILE_FLAGS)
    set_target_properties(tailor PROPERTIES
        COMPILE_FLAGS "${MPI_COMPILE_FLAGS}")
endif()

if(MPI_LINK_FLAGS)
    set_target_properties(tailor PROPERTIES 
        LINK_FLAGS "${MPI_LINK_FLAGS}")
endif()

target_compile_features(tailor PUBLIC cxx_std_14)
0 Answers
Related