1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 14:42:11 +02:00
cdt/doc/org.eclipse.cdt.doc.user/reference/cdt_u_prop_build.htm
Jeff Johnston c96d126b86 Bug 513589 - Add support to build CDT projects in a Docker Container
- add IOptionalBuildObjectPropertiesContainer interface to use for
  objects that supply optional build properties
- add new IOptionalBuildProperties interface that defines
  optional build properties donated by external plug-ins
- add new
- change IConfiguration to an IOptionalBuildObjectPropertiesContainer
- change IManagedProject to be an
  IOptionalBuildObjectPropertiesContainer
- fix ProcessClosure to ensure that readers are not null before
  accessing them
- fix Container launch delegate to look at project optional
  build properties for active configuration to fetch connection
  and image info and use said info to find a matching
  launch or create a new one
- have Container launch delegate use the image name as part of
  the launch config name
- have Container launch short-cut also use the project's
  optional build properties for the active config to get
  connection and image information before any defaulting
- change AutotoolsNewMarkerGenerator to store the command
  launcher as an ICommandLauncher
- add new CommandLauncherFactory extension to cdt.core that
  allows plug-ins to specify a CommandLauncherFactory that
  will return an ICommandLauncher based on the project
- add macros for new extension to CCorePlugin
- add new CommandLauncherManager class that loads
  CommandLauncherFactory extensions and is used to give
  an ICommandLauncher wrapper that will go through the list
  of CommandLauncherFactory extensions until one returns
  non-null ICommandLauncher
- add code to RemoteCommandLauncher so it will use the
  CommandLauncherManager to get the local launcher
- also change RemoteCommandLauncher to check at execution
  time whether the command is local and in that case use
  the local command launcher
- add new ICommandLauncherFactory interface
- add new ContainerCommandLauncher to launch
- add new ContainerCommandLauncherFactory class for returning
  a ContainerCommandLauncher instance to launch commands
  in a Docker Container
- change MakeBuilder to use CommandLauncherManager to get
  its ICommandLauncher
- change CommandBuilder to use CommandLauncherManager too
- ditto for Builder and AbstractBuiltinSpecsDetector and
  ExternalToolInvoker
- change Configuration to load/store optional build properties
  as well as return the properties to get/set
- ditto for MultiConfiguration
- change ManagedProject to implement IOptionalBuildOptionProperties
  interface
- ditto for ProjectType
- create new OptionalBuildProperties class to store optional
  build properties for a configuration
- bump cdt.docker.launcher to 1.1.0
- use CommandLauncherFactory extension to define
  ContainerCommandLauncherFactory
- add optional ContainerPropertyTab which allows the end-user to
  optionally choose to build a C/C++ project in a Container
  and specify the connection/image to use
- in LanguageSettingsSerializableSettings class, call the
  CommandLauncherManager getLanguageSettingEntries method
  to get the massaged language setting entries based on the
  current list
- in LanguageSettingsProviderSerializer, try and get the
  pooled entries using the cfg description so that it will
  have the project and can use the CommandLauncherManager
  to get entries from image
- in ContainerCommandLauncherFactory move cached headers under
  a HEADERS directory in the plug-in area
  - create a sub-directory for the connection and a sub-directory
    for the image based on cleansed names
  - store the real names of the connection and image to use
    later in the DockerHeaderPreferencePage
- modify LanguageSettingsEntriesTab to force the horizontal
  scroll bar to appear (this is a bug in SWT SashForm support
  and the fix here isn't quite correct, but is better)
- add new DockerHeaderPreferencePage that allows user to
  remove cached headers from images
- change C/C++ Docker preferences to be titled: Docker Container
- fix LanguageSettingsWorkspaceProvider.getSettingEntries method
  to use the CommandLauncherManager so entries will be transformed
  to use cached headers
- add BaseDatabindingModel class
- add DataVolumeModel class to model a volume mount
- add ContainerPropertyVolumes model to model volume specification
  and selected volumes
- add properties to ContainerCommandLauncher to represent
  volumes and selected volumes for a configuration
- add ContainerDataVolumeDialog for specifying a volume
  mount by the end-user
- add a null detector for cfgDescription in
  LanguageSettingsSerializableProvider
- fix AutotoolsNewMakeGenerator.getWinOSType to not specify "." for
  working dir
- fix GCCBuiltinSpecsDetectorCygwin to not map paths to Cygwin if
  the current configuration is enabled for container build
- add logic to ContainerCommandLauncher to look for Windows
  file formats and change them to unix format and map
  any "." working dir to be /tmp
- fix ContainerLauncherConfigurationDelegate similarly
- fix AbstractBuiltinSpecsDetector to pass in the current
  configuration description when getting the CommandLauncher
  since the current configuration may not be the active
  configuration
- change ContainerPropertyTab to add Elf and GNU Elf binary parsers
  when build in Container is chosen so that output executables
  are treated as Binaries by the CDT project
- add documentationl for the ContainerPropertyTab in Build Settings and
  the Data Volume dialog pop-up it brings up
- change CommandBuilder to accept a project as an argument
  to its constructor and to pass this as an argument to
  the CommandLauncherManager
- have StepBuilder pass project when creating a CommandBuilder

Change-Id: Ia78488b93056e6ec7ca83a6c87b3a9d2b9424943
2017-10-22 05:38:51 -04:00

217 lines
No EOL
13 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>C/C++ Project Properties, C/C++ Build</title>
<link rel="stylesheet" type="text/css" href="../help.css">
</head>
<body>
<div role="main"><h1>C/C++ Project Properties, C/C++ Build</h1>
<p>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 <strong>Builder settings</strong> and <strong>Behaviour</strong> properties.
</p>
<p><strong>Note:</strong> Modifying some settings, such as the <strong>Generate makefiles automatically</strong> option, might affect other parameters (setting them from enabled to disabled in some situations)
and, moreover, change the visibility of other property pages.
</p>
<p><img img src="../images/prop_cbuild.png" alt="C/C++ Project Properties, C/C++ Build"></p>
<table cellpadding="5" cellspacing="0" border="1" >
<br>
<caption><strong>Builder settings preferences</strong></caption>
<br>
<colgroup>
<col width="30%" valign="top" >
<col width="70%" valign="top" >
</colgroup>
<tbody>
<tr class="hidden">
<th id="option">Option</th>
<th id="description">Description</th>
</tr>
<tr>
<td headers="option"><strong>Configuration</strong></td>
<td headers="description"><a href="cdt_u_prop_all.htm">Click here for its description.</a></td>
</tr>
<tr>
<td headers="option"><strong>Manage configurations</strong></td>
<td headers="description"><a href="cdt_u_prop_all.htm">Click here for its description.</a></td>
</tr>
<tr>
<td headers="option"><strong>Builder type</strong></td>
<td headers="description">Specifies the type of builder to use: <strong>Internal builder</strong> (builds C/C++ programs using a compiler that implements the C/C++ Language Specification) and <strong>External builder</strong> (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).</td>
</tr>
<tr>
<td headers="option"><strong>Use default build command</strong></td>
<td headers="description">When enabled, this option indicates that you want to use the default <strong>make</strong> command. When disabled, it indicates the use of a new <strong>make</strong> command. This option is only available when the <strong>Build type</strong> option is set to <strong>External</strong>.</td>
</tr>
<tr>
<td headers="option"><strong>Build command</strong></td>
<td headers="description">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 <strong>make</strong> command (when the <strong>Use default build command</strong> is not selected the field is active, and when you use an external builder or a custom makefile, you can provide your specific commands).</td>
</tr>
<tr>
<td headers="option"><strong>Variables</strong></td>
<td headers="description">Opens the Select build variable dialog where you can add environment variables and custom variables to the build command.
<p><img img src="../images/prop_cbuild_selbldvar.png" alt="C/C++ Project Properties, C/C++ Build, Select build variable"></p>
<br>
</tr>
<tr>
<td headers="option"><strong>Generate Makefiles automatically</strong></td>
<td headers="description">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.</td>
</tr>
<tr>
<td headers="option"><strong>Expand Env. Variable Refs in Makefiles</strong></td>
<td headers="description">Defines whether environment variables ( ${xxx} ) should be expanded in makefile. By default, this option is automatically set.</td>
</tr>
<tr>
<td headers="option"><strong>Build directory</strong></td>
<td headers="description">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 <strong>Generate Makefiles automatically</strong> option is enabled.</td>
</tr>
<tr>
<td headers="option"><strong>Workspace</strong></td>
<td headers="description">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 <strong>Generate makefiles automatically</strong> is set not selected.</td>
</tr>
<tr>
<td headers="option"><strong>File system</strong></td>
<td headers="description">Opens the file system navigator where you can specify another file system to use. This button is only visible when <strong>Generate makefiles automatically</strong> is set not selected.</td>
</tr>
<tr>
<td headers="option"><strong>Variables</strong></td>
<td headers="description">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 <strong>Generate makefiles automatically</strong> is set not selected.</td>
</tr>
</tbody>
</table>
<p><img img src="../images/prop_cbuild2.png" alt="C/C++ Project Properties, C/C++ Build"></p>
<table cellpadding="5" cellspacing="0" border="1" >
<br>
<caption><strong>Behaviour preferences</strong></caption>
<br>
<colgroup>
<col width="30%" valign="top" >
<col width="70%" valign="top" >
</colgroup>
<tbody>
<tr class="hidden">
<th id="option2">Option</th>
<th id="description2">Description</th>
</tr>
<tr>
<td headers="option2"><strong>Stop on first build error</strong></td>
<td headers="description2">Stops building when Eclipse encounters an error.
<p><strong>Note:</strong> If this option is not selected, it is helpful for building large projects because it tells <strong>make</strong> to continue making other independent rules even when one rule fails.</p></td>
</tr>
<tr>
<td headers="option2"><strong>Use parallel build</strong></td>
<td headers="description2">When enabled, this option indicates the activation of the generation of parallel builds.
<p>If you enable this option, you need to determine the number of parallel jobs to perform:</p>
<ul>
<li><strong>Use optimal jobs number</strong> - Lets the system determine the optimal number of parallel jobs to perform.</li>
<li><strong>Use parallel jobs</strong> - Lets you specify the maximum number of parallel jobs to perform.</li>
</ul>
</td>
</tr>
<tr>
<td headers="option2"><strong>Workbench build behavior</strong></td>
<td headers="description2">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.</td>
</tr>
<tr>
<td headers="option2"><strong>Build on resource save (Auto build)</strong></td>
<td headers="description2">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.</td>
</tr>
<tr>
<td headers="option2"><strong>make build target</strong> ( for Build on resource save (Auto build))</td>
<td headers="description2">To build your project when resources are saved and change the default <strong>make</strong> build target, enable the <strong>Build on resource save (Auto Build)</strong> option, and specify a new build target in the <strong>Make build target</strong> field.</td>
</tr>
<tr>
<td headers="option2"><strong>Variables</strong></td>
<td headers="description2">Opens the Select build variable dialog where you can add variables to the build command.
<p><img img src="../images/prop_cbuild_selbldvar.png" alt="C/C++ Project Properties, C/C++ Build, Select build variable"></p>
</tr>
<tr>
<td headers="option2"><strong>Build (Incremental build)</strong></td>
<td headers="description2">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.
</td>
</tr>
<tr>
<td headers="option2"><strong>make build target</strong> (for Build (Incremental build))</td>
<td headers="description2">To change the build default <strong>make</strong> build target, enable the <strong>Build (Incremental build)</strong> option, and specify a new build target in the <strong>Make build target</strong> field.</td>
</td>
</tr>
<tr>
<td headers="option2"><strong>Variables</strong></td>
<td headers="description2">Opens the Select build variable dialog where you can add variables to the <strong>make build target</strong> command.</td>
</tr>
<tr>
<td headers="option2"><strong>Clean</strong></td>
<td headers="description2">Defines what the builder calls when a clean is performed. The <strong>make clean</strong> is defined in the <strong>makefile</strong>.</td>
</tr>
<tr>
<td headers="option2"><strong>make build target</strong> (for Clean)</td>
<td headers="description2">To change the rebuild default <strong>make</strong> build target, enable the <strong>Clean</strong> option, and specify a new build target in the <strong>Make build target</strong> field.</td>
</td>
</tr>
<tr>
<td headers="option2"><strong>Variables</strong></td>
<td headers="description2">Opens the Select build variable dialog where you can add variables to the <strong>make build target</strong> command.</td></td>
</tr>
</tbody>
</table>
<p><img src="../images/ngref.gif" alt="Related reference"
width="143" height="21"><br>
<ul>
<li><a href="cdt_u_prop_resource.htm">Project Properties, Resource page</a>
<li><a href="cdt_u_prop_builders.htm">Project Properties, Builders page</a>
<li><a href="cdt_u_prop_build.htm">Project Properties, C/C++ Build category</a>
<ul style="list-style-type: disc">
<li><a href="cdt_u_prop_build_discovery.htm">Discovery options page</a>
<li><a href="cdt_u_prop_build_environment.htm">Environment page</a>
<li>Settings page
<ul>
<li><a href="cdt_u_prop_build_settings_tool.htm"> Tool Settings tab</a>
<li><a href="cdt_u_prop_build_settings_container.htm">Container Settings tab</a>
<li><a href="cdt_u_prop_build_settings_steps.htm"> Build Steps tab</a>
<li><a href="cdt_u_prop_build_settings_artifact.htm"> Build Artifact tab</a>
<li><a href="cdt_u_prop_build_settings_binparser.htm">Binary Parsers tab</a>
<li><a href="cdt_u_prop_build_settings_errparser.htm">Error Parsers tab</a>
</ul>
<li><a href="cdt_u_prop_build_toolchain.htm">Tool chain editor page</a>
<li><a href="cdt_u_prop_build_variables.htm">Variables page</a>
</ul>
<li>Project Properties, <a href="cdt_u_prop_general.htm">C/C++ General category</a>
<ul style="list-style-type: disc">
<li><a href="cdt_u_prop_general_doc.htm">Documentation page</a>
<li><a href="cdt_u_prop_general_typ.htm">File Types page</a>
<li><a href="cdt_u_prop_general_idx.htm">Indexer page</a>
<li><a href="cdt_u_prop_general_lng.htm">Language Mapping page</a>
<li>Paths and Symbols page
<ul>
<li><a href="cdt_u_prop_general_pns_inc.htm">Includes tab</a>
<li><a href="cdt_u_prop_general_pns_sym.htm">Symbols tab</a>
<li><a href="cdt_u_prop_general_pns_libpath.htm">Libraries path tab</a>
<li><a href="cdt_u_prop_general_pns_src.htm">Source Location tab</a>
<li><a href="cdt_u_prop_general_pns_ref.htm">References tab</a>
</ul>
</ul>
<li><a href="cdt_u_prop_ref.htm">C/C++ Project Properties, Project References page</a>
<li><a href="cdt_u_prop_refactoring_history.htm">C/C++ Project Properties, Refactoring History page</a>
<li><a href="cdt_u_prop_rundebug.htm">C/C++ Project Properties, Run/Debug Settings page</a>
</ul>
</p>
<p><img src="../images/intl_07.gif" ALT="Intel Copyright Statement" ></p>
</div></body>
</html>