You can use macros to modify the way that the project system refers to files. Macros are divided into four classes:

- System Macros These are provided by the Studio application and are used to relay information from the environment, such as paths to common directories.
- Global Macros These macros are saved in the environment and are shared across all solutions and projects. Typically, you would set up paths to library or external items here.
- Project Macros These macros are saved in the project file as project properties and can define macro values specific to the solution/project they are defined in.
- Build Macros These macros are generated by the project system whenever a build occurs.

##### System Macros

The following macro values are defined by the system

StudioDir | The install directory of the Studio application.

System macros can be used in build properties and also for environment settings.

##### Global macros

To define a global macro

- Select Macros from the Project menu.
- Click on the the Global tab.
- Set the macro using the syntax name = replacement text.

##### Project Macros

To define a project macro

- Select Macros from the Project menu.
- Click on the Project tab.
- Select the solution or project the macro should apply to.
- Set the macro using the syntax name = replacement text.

Alternatively you can set the project macros from the properties window:

- Select the appropriate solution/project in the Project Explorer.
- In the properties window, select the Macros property in the General Options group.
- Click on the the ellipsis button on the right.
- Set the macro using the syntax name = replacement text.

##### Build Macros

The following macro values are defined by the project system for a build of a given project node.

ProjectDir | The project directory.
ProjectName | The project name.
Configuration | The selected build configuration.
SolutionDir | The directory containing the solution file.
SolutionName | The solution name.
InputFileName | The name of an input file relative to it's project directory.
InputName | The name of an input file relative to it's project directory without its extension.
InputExt | The extension of an input file.
IntDir | The macro expanded value of the Intermediate Directory property.
OutDir | The macro expanded value of the Output Directory property.
EXE | The default file extension for an executable file including the dot.
LIB | The default file extension for a library file including the dot.
OBJ | The default file extension for an object file including the dot.

##### Using Macros

You can use a macro in a project property or an environment setting using the $(macro) syntax. For example the Object File Name property has a default value of $(IntDir)/$(InputName)$(OBJ).

To enable debugging of builds you should use the Build Information... dialog that is on the context menu of the project explorer. This dialog will give a full list of the macros that are specified for the project node selected together with the macro expanded property values.