cmake_minimum_required(VERSION 2.8) project(target_compile_options) add_executable(target_compile_options "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp" ) target_compile_options(target_compile_options PRIVATE $<$:-DMY_PRIVATE_DEFINE> PUBLIC $<$:-DMY_PUBLIC_DEFINE> INTERFACE $<$:-DMY_INTERFACE_DEFINE> ) if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") target_compile_definitions(target_compile_options PRIVATE "DO_GNU_TESTS" ) endif() add_executable(consumer "${CMAKE_CURRENT_SOURCE_DIR}/consumer.cpp" ) target_sources(consumer PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/consumer.c" ) target_compile_options(consumer PRIVATE -DCONSUMER_LANG_$ -DLANG_IS_CXX=$ -DLANG_IS_C=$ ) if(CMAKE_GENERATOR MATCHES "Visual Studio") target_compile_definitions(consumer PRIVATE TEST_LANG_DEFINES_FOR_VISUAL_STUDIO ) endif() target_compile_options(consumer PRIVATE $<$:$> ) if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") target_compile_definitions(consumer PRIVATE "DO_GNU_TESTS" ) endif() # Test no items target_compile_options(consumer PRIVATE )