cmake_minimum_required(VERSION 2.8) project(target_compile_definitions) add_executable(target_compile_definitions "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp" ) target_compile_definitions(target_compile_definitions PRIVATE MY_PRIVATE_DEFINE PUBLIC MY_PUBLIC_DEFINE INTERFACE MY_INTERFACE_DEFINE ) add_library(importedlib UNKNOWN IMPORTED) target_compile_definitions(importedlib INTERFACE MY_IMPORTEDINTERFACE_DEFINE ) add_executable(consumer "${CMAKE_CURRENT_SOURCE_DIR}/consumer.cpp" ) target_compile_definitions(consumer PRIVATE target_compile_definitions importedlib $<$:SHOULD_NOT_BE_DEFINED> $<$:SHOULD_BE_DEFINED> )