# C/C++ Project Properties, C/C++ Build

This page serves as the main window that contains all builder-specific property pages. In addition, directly from this window you can define preferences for the Builder settings and Behaviour properties.

Note: Modifying some settings, such as the Generate makefiles automatically option, might affect other parameters (setting them from enabled to disabled in some situations) and, moreover, change the visibility of other property pages.

Builder settings preferences
Option | Description
--- | ---
Configuration | Click here for its description.
Manage configurations | Click here for its description.
Builder type | Specifies the type of builder to use: Internal builder (builds C/C++ programs using a compiler that implements the C/C++ Language Specification) and External builder (external tools let you configure and run programs and Ant buildfiles using the Workbench, which can saved and run at a later time to perform a build).
Use default build command | When enabled, this option indicates that you want to use the default make command. When disabled, it indicates the use of a new make command. This option is only available when the Build type option is set to External.
Build command | Specifies the default command used to start the build utility for your specific toolchain. Use this field if you want to use a build utility other than the default make command (when the Use default build command is not selected the field is active, and when you use an external builder or a custom makefile, you can provide your specific commands).
Variables | Opens the Select build variable dialog where you can add environment variables and custom variables to the build command.
Generate Makefiles automatically | When selected, Eclipse changes between two different CDT modes: it either uses the customer's makefile for the build (referred to as a 'Standard Make project' in CDT 3.x) if one exists, or it generate makefiles for the user (called 'Managed build project' in CDT 3.x). By default, this option is automatically set.
Expand Env. Variable Refs in Makefiles | Defines whether environment variables ( ${xxx} ) should be expanded in makefile. By default, this option is automatically set.
Build directory | Defines the location where the build operation takes place. This location will contain the generated artifacts from the build process. This option is disabled when the Generate Makefiles automatically option is enabled.
Workspace | Opens the Folder Selection dialog where you can select a workspace location for the project. This is the directory that will contain the plug-ins and features to build, including any generated artifacts. This button is only visible when Generate makefiles automatically is set not selected.
File system | Opens the file system navigator where you can specify another file system to use. This button is only visible when Generate makefiles automatically is set not selected.
Variables | Opens the Select build variable dialog where you can select a variable to specify as an argument for the build directory, or create and configure simple build variables which you can reference in build configurations that support variables. This button is only visible when Generate makefiles automatically is set not selected.

Behaviour preferences
Option | Description
--- | ---
Stop on first build error | Stops building when Eclipse encounters an error. Note: If this option is not selected, it is helpful for building large projects because it tells make to continue making other independent rules even when one rule fails.

Use parallel build

When enabled, this option indicates the activation of the generation of parallel builds.

If you enable this option, you need to determine the number of parallel jobs to perform:

- Use optimal jobs number - Lets the system determine the optimal number of parallel jobs to perform.
- Use parallel jobs - Lets you specify the maximum number of parallel jobs to perform.

Workbench build behavior | By default, the following settings are what the builder uses when instructed to build, rebuild, clean, and so on. You can change these settings so that new projects can use different targets if these defaults are not appropriate.

Build on resource save (Auto build)

When selected, builds your project whenever resources are saved. By default, this option is selected and builds occur automatically each time resources are modified. When this option is not selected, a build occurs only manually using a menu item. If you require more control over when builds occur (for example, when a build should wait until you finish a large assortment of changes), disable this option and manually invoke builds yourself.

make build target ( for Build on resource save (Auto build)) | To build your project when resources are saved and change the default make build target, enable the Build on resource save (Auto Build) option, and specify a new build target in the Make build target field.
Variables | Opens the Select build variable dialog where you can add variables to the build command.
Build (Incremental build) | Defines what the builder calls when an incremental build is performed. When this option is enabled, an incremental build occurs meaning that only resources that have changed since the last build are considered. If this option is disabled, a full build occurs, meaning that all resources within the scope of the build are considered.
make build target (for Build (Incremental build)) | To change the build default make build target, enable the Build (Incremental build) option, and specify a new build target in the Make build target field.
Variables | Opens the Select build variable dialog where you can add variables to the make build target command.
Clean | Defines what the builder calls when a clean is performed. The make clean is defined in the makefile.
make build target (for Clean) | To change the rebuild default make build target, enable the Clean option, and specify a new build target in the Make build target field.
Variables | Opens the Select build variable dialog where you can add variables to the make build target command.

- Project Properties, Resource page
- Project Properties, Builders page
- Project Properties, C/C++ Build category
  - Discovery options page
  - Environment page
  - Settings page
    - Tool Settings tab
    - Container Settings tab
    - Build Steps tab
    - Build Artifact tab
    - Binary Parsers tab
    - Error Parsers tab
  - Tool chain editor page
  - Variables page
- Project Properties, C/C++ General category
  - Documentation page
  - File Types page
  - Indexer page
  - Language Mapping page
  - Paths and Symbols page
    - Includes tab
    - Symbols tab
    - Libraries path tab
    - Source Location tab
    - References tab
- C/C++ Project Properties, Project References page
- C/C++ Project Properties, Refactoring History page
- C/C++ Project Properties, Run/Debug Settings page