macro(test_target_property PROP)
  add_custom_target(CustomTarget)
  set_property(TARGET CustomTarget PROPERTY ${PROP} x)
  set_property(TARGET CustomTarget PROPERTY ${PROP})
  set_property(TARGET CustomTarget APPEND PROPERTY ${PROP})
  set_property(TARGET CustomTarget PROPERTY ${PROP} a)
  set_property(TARGET CustomTarget APPEND PROPERTY ${PROP} "")
  set_property(TARGET CustomTarget APPEND PROPERTY ${PROP} b c)
  set_property(TARGET CustomTarget APPEND PROPERTY ${PROP})
  set_property(TARGET CustomTarget APPEND PROPERTY ${PROP} "d;;e")
  get_property(val TARGET CustomTarget PROPERTY ${PROP})
  message(STATUS "Target ${PROP} is '${val}'")
  set_property(TARGET CustomTarget PROPERTY ${PROP})
endmacro()

macro(test_directory_property PROP)
  set_property(DIRECTORY PROPERTY ${PROP} x)
  set_property(DIRECTORY PROPERTY ${PROP})
  set_property(DIRECTORY APPEND PROPERTY ${PROP})
  set_property(DIRECTORY PROPERTY ${PROP} a)
  set_property(DIRECTORY APPEND PROPERTY ${PROP} "")
  set_property(DIRECTORY APPEND PROPERTY ${PROP} b c)
  set_property(DIRECTORY APPEND PROPERTY ${PROP})
  set_property(DIRECTORY APPEND PROPERTY ${PROP} "d;;e")
  get_property(val DIRECTORY PROPERTY ${PROP})
  message(STATUS "Directory ${PROP} is '${val}'")
  set_property(DIRECTORY PROPERTY ${PROP})
endmacro()