The CrossStudio project system provides a means to create new properties that change a number of 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>
  <grouphdots

  <grouphdots
</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). For example:

<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), e.g.:

<groupEntry name="STR910FW32">

A groupEntry has the property values and C pre-processor definitions that are set when the groupEntry is selected; they are specified with property and cdefine elements. For example:

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

A property element has the property's 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" />