问题描述
我可以使用 CMAKE_CXX_FLAGS
和 target_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 (将#修改为@)