myx-cmake-example-features/cmake/myx/lib/macro/CheckEnableCxxCompilerFlag.cmake
2022-10-07 15:02:38 +03:00

38 lines
935 B
CMake

include_guard(GLOBAL)
# based on https://github.com/bluescarni/yacma
include(CheckCXXCompilerFlag)
macro(check_enable_cxx_compiler_flag flag)
set(options)
set(oneValueArgs TARGET)
set(multiValueArgs)
cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
set(CMAKE_REQUIRED_QUIET TRUE)
check_cxx_compiler_flag("${flag}" check_cxx_flag)
unset(CMAKE_REQUIRED_QUIET)
if(check_cxx_flag)
myx_message_notice("'${flag}': flag is supported.")
if(ARG_TARGET)
target_compile_options(${ARG_TARGET} PUBLIC ${flag})
else()
add_compile_options(${flag})
endif()
else()
myx_message_status("'${flag}': flag is NOT supported.")
endif()
unset(check_cxx_flag CACHE)
foreach(iter IN LISTS oneValueArgs multiValueArgs)
unset(ARG_${iter})
endforeach()
unset(ARG_UNPARSED_ARGUMENTS)
unset(multiValueArgs)
unset(oneValueArgs)
unset(options)
endmacro()