在 CMake 中为 Intel 编译器设置 c++14

问题描述

我可以使用 CMAKE_CXX_FLAGStarget_compile_features 在 CMake (3.18.0) 中为 GNU 编译器设置 c++14。我喜欢在 lambda 函数中使用 auto,这就是我想使用 c++14 的原因。当我切换到英特尔编译器 (19.0.1.144 20181018) 时,使用 auto 时出现错误。我认为这是因为在 CMake 中没有正确设置 c++14 功能。如何在 CMake 中为英特尔编译器设置 c++14?

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)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...