DebugProperties.cmake 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. cmake_minimum_required(VERSION 2.8)
  2. project(CompatibleInterface)
  3. include(GenerateExportHeader)
  4. set(CMAKE_INCLUDE_CURRENT_DIR ON)
  5. add_library(iface1 INTERFACE)
  6. set_property(TARGET iface1 APPEND PROPERTY
  7. COMPATIBLE_INTERFACE_BOOL
  8. BOOL_PROP1
  9. BOOL_PROP2
  10. BOOL_PROP3
  11. BOOL_PROP4
  12. BOOL_PROP5
  13. BOOL_PROP6
  14. BOOL_PROP7
  15. )
  16. set_property(TARGET iface1 APPEND PROPERTY
  17. COMPATIBLE_INTERFACE_STRING
  18. STRING_PROP1
  19. STRING_PROP2
  20. STRING_PROP3
  21. )
  22. set_property(TARGET iface1 APPEND PROPERTY
  23. COMPATIBLE_INTERFACE_NUMBER_MIN
  24. NUMBER_MIN_PROP1
  25. NUMBER_MIN_PROP2
  26. )
  27. set_property(TARGET iface1 APPEND PROPERTY
  28. COMPATIBLE_INTERFACE_NUMBER_MAX
  29. NUMBER_MAX_PROP1
  30. NUMBER_MAX_PROP2
  31. )
  32. set(CMAKE_DEBUG_TARGET_PROPERTIES
  33. BOOL_PROP1 BOOL_PROP2 BOOL_PROP3 BOOL_PROP4 BOOL_PROP5 BOOL_PROP6 BOOL_PROP7
  34. STRING_PROP1 STRING_PROP2 STRING_PROP3
  35. NUMBER_MIN_PROP1 NUMBER_MIN_PROP2
  36. NUMBER_MAX_PROP1 NUMBER_MAX_PROP2
  37. )
  38. set_property(TARGET iface1 PROPERTY INTERFACE_BOOL_PROP1 ON)
  39. set_property(TARGET iface1 PROPERTY INTERFACE_BOOL_PROP2 ON)
  40. set_property(TARGET iface1 PROPERTY INTERFACE_BOOL_PROP5 OFF)
  41. set_property(TARGET iface1 PROPERTY INTERFACE_BOOL_PROP6 OFF)
  42. set_property(TARGET iface1 PROPERTY INTERFACE_BOOL_PROP7 OFF)
  43. set_property(TARGET iface1 PROPERTY INTERFACE_STRING_PROP1 prop1)
  44. set_property(TARGET iface1 PROPERTY INTERFACE_STRING_PROP2 prop2)
  45. set_property(TARGET iface1 PROPERTY INTERFACE_NUMBER_MIN_PROP1 100)
  46. set_property(TARGET iface1 PROPERTY INTERFACE_NUMBER_MIN_PROP2 200)
  47. set_property(TARGET iface1 PROPERTY INTERFACE_NUMBER_MAX_PROP1 100)
  48. set_property(TARGET iface1 PROPERTY INTERFACE_NUMBER_MAX_PROP2 200)
  49. add_library(iface2 INTERFACE)
  50. set_property(TARGET iface2 PROPERTY INTERFACE_BOOL_PROP6 OFF)
  51. add_library(iface3 INTERFACE)
  52. add_executable(CompatibleInterface empty.cpp)
  53. target_link_libraries(CompatibleInterface iface1 iface2
  54. $<$<BOOL:$<TARGET_PROPERTY:BOOL_PROP7>>:iface3>
  55. )
  56. set_property(TARGET CompatibleInterface PROPERTY BOOL_PROP2 ON)
  57. set_property(TARGET CompatibleInterface PROPERTY BOOL_PROP3 ON)
  58. set_property(TARGET CompatibleInterface PROPERTY STRING_PROP2 prop2)
  59. set_property(TARGET CompatibleInterface PROPERTY STRING_PROP3 prop3)
  60. set_property(TARGET CompatibleInterface PROPERTY NUMBER_MIN_PROP1 50)
  61. set_property(TARGET CompatibleInterface PROPERTY NUMBER_MIN_PROP2 250)
  62. set_property(TARGET CompatibleInterface PROPERTY NUMBER_MAX_PROP1 50)
  63. set_property(TARGET CompatibleInterface PROPERTY NUMBER_MAX_PROP2 250)