READONLY_PROPERTIES.cmake 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. set(read_only_properties
  2. "HEADER_SETS"
  3. "INTERFACE_HEADER_SETS"
  4. "MANUALLY_ADDED_DEPENDENCIES"
  5. "NAME"
  6. "TYPE"
  7. )
  8. set(read_only_properties_imported
  9. "EXPORT_NAME"
  10. "SOURCES"
  11. )
  12. set(read_only_properties_nonimported
  13. "IMPORTED_GLOBAL"
  14. )
  15. set(read_only_properties_160
  16. "ALIAS_GLOBAL"
  17. "BINARY_DIR"
  18. "CXX_MODULE_SETS"
  19. "IMPORTED"
  20. "INTERFACE_CXX_MODULE_SETS"
  21. "LOCATION"
  22. "LOCATION_CONFIG"
  23. "SOURCE_DIR"
  24. )
  25. cmake_policy(GET CMP0160 policy160)
  26. add_library(ReadOnlyLib )
  27. add_library(ReadOnlyImport IMPORTED UNKNOWN)
  28. foreach(target ReadOnlyLib ReadOnlyImport)
  29. get_target_property(is_imported ${target} IMPORTED)
  30. set(are_read_only ${read_only_properties})
  31. if(NOT policy160 STREQUAL "OLD")
  32. list(APPEND are_read_only ${read_only_properties_160})
  33. endif()
  34. if(is_imported)
  35. list(APPEND are_read_only ${read_only_properties_imported})
  36. else()
  37. list(APPEND are_read_only ${read_only_properties_nonimported})
  38. endif()
  39. foreach(prop IN LISTS are_read_only)
  40. set_target_properties(${target} PROPERTIES ${prop} "a_value")
  41. endforeach()
  42. if(policy160 STREQUAL "OLD")
  43. foreach(prop IN LISTS read_only_properties_160)
  44. set_target_properties(${target} PROPERTIES ${prop} "a_value")
  45. endforeach()
  46. endif()
  47. endforeach()