The CrossStudio project system provides a means to create new properties that change a number project property settings and can also set C pre-processor definitions when selected. Such properties are called property groups and are defined in a property groups file. The property group file to use for a project is defined by the `Property Groups File` property. These files usually define target specific properties and are structured using XML syntax to enable simple construction and parsing.

The first entry of the property groups file defines the XML document type which is used to validate the file format.

    <!DOCTYPE CrossStudio_Group_Values>

The next entry is the propertyGroups element; which is used to group a set of property groups entries into an XML hierarchy.

    <propertyGroups>
      <group....
      ....
      <group....
    </propertyGroups>

Each group has the name of the group (attribute `name`), the name of the options category (attribute `group`), short (attribute `short`) and long (attribute `long`) help descriptions and a default value (attribute `default`).

    <group short="Target Processor" group="Build Options" short="Target Processor" long="Select a set of target options" name="Target" default="STR912FW44"/>

Each group has a number of groupEntry elements that define the enumerations of the group.

    <group...>
      <groupEntry....
      ....
      <groupEntry....
    </group>

Each groupEntry has the name of the entry (attribute `name`)

    <groupEntry name="STR910FW32">

A groupEntry has the property values and C pre-processor definitions that are set when the groupEntry is selected which are specified with `property` and `cdefine` elements.

    <groupEntry...>
      <property....
      <cdefine....
      <property....
    </groupEntry>

A property element has the property name (attribute `name`), its value (attribute `value`) and an optional configuration (attribute `configuration`).

    <property name="linker_memory_map_file" value="$(StudioDir)/targets/ST_STR91x/ST_STR910FM32_MemoryMap.xml"/>

A cdefine element has the C preprocessor name (attribute `name`) and its value (attribute `value`).

    <cdefine value="STR910FM32" name="TARGET_PROCESSOR">