cmake_minimum_required(VERSION 3.0) project(test) option(CHECK_USING_CLANG "check if target is compiled using Clang" OFF) option(CHECK_SURPASS_WARNING "check if target could surpass a compiler warning" OFF) if(CHECK_SURPASS_WARNING) set(CMAKE_C_FLAGS "-Werror -Wunused-variable ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "-Werror -Wunused-variable ${CMAKE_CXX_FLAGS}") endif() add_executable(hello_world hello_world.cpp) list(APPEND LANGS c cpp) foreach(LANG ${LANGS}) configure_file(test.in ${CMAKE_CURRENT_BINARY_DIR}/test.${LANG}) add_executable(test_${LANG} EXCLUDE_FROM_ALL ${CMAKE_CURRENT_BINARY_DIR}/test.${LANG}) target_compile_definitions( test_${LANG} PRIVATE $<$:IS_C> $<$:CHECK_USING_CLANG> $<$:CHECK_SURPASS_WARNING> ) endforeach()