我想将 C++98 / C++11 开关添加到基于 cmake 的构建系统中。由于某些跨平台相关的原因,它已经有另一个开关,即:
if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++98")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++98")
endif()
因此,要添加 C++11,我必须添加一个类似的子句,但由于代码重复,我不喜欢它。真的不可能独立于标准启用扩展吗?就像是:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=${STANDARD_FLAG} ${EXTENSION_FLAGS}")