CMakeLists.txt 787 B

123456789101112131415161718192021222324252627282930
  1. cmake_minimum_required(VERSION 2.8)
  2. project(target_compile_definitions)
  3. add_executable(target_compile_definitions
  4. "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp"
  5. )
  6. target_compile_definitions(target_compile_definitions
  7. PRIVATE MY_PRIVATE_DEFINE
  8. PUBLIC MY_PUBLIC_DEFINE
  9. INTERFACE MY_INTERFACE_DEFINE
  10. )
  11. add_executable(consumer
  12. "${CMAKE_CURRENT_SOURCE_DIR}/consumer.cpp"
  13. )
  14. add_library(linked UNKNOWN IMPORTED)
  15. set_property(TARGET linked PROPERTY
  16. INTERFACE_COMPILE_DEFINITIONS "MY_LINKED_DEFINE")
  17. target_compile_definitions(consumer
  18. PRIVATE $<TARGET_PROPERTY:target_compile_definitions,INTERFACE_COMPILE_DEFINITIONS>
  19. $<$<TARGET_DEFINED:notdefined>:SHOULD_NOT_BE_DEFINED>
  20. $<$<TARGET_DEFINED:target_compile_definitions>:SHOULD_BE_DEFINED>
  21. $<LINKED:linked>
  22. -DDASH_D_DEFINE
  23. )