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_executable(consumer "${CMAKE_CURRENT_SOURCE_DIR}/consumer.cpp" ) target_compile_definitions(consumer PRIVATE $ -DDASH_D_DEFINE ) # Test no items target_compile_definitions(consumer PRIVATE ) add_definitions(-DSOME_DEF) add_library(imp UNKNOWN IMPORTED) get_target_property(_res imp COMPILE_DEFINITIONS) if (_res) message(SEND_ERROR "add_definitions populated the COMPILE_DEFINITIONS target property") endif()