The General page contains settings that affect VS builds initiated by this Agent:
Multiple CPU/Core Utilization
Allow linking steps to run in parallel locally:
This option determines if linking steps for different projects will be allowed to run in parallel on the Initiator machine. Select this option only if your system's memory can handle multiple link steps.
Max. number of CPU/Cores used for parallel linking:
When the Allow linking steps to run in parallel locally option is enabled, enter the maximum number of CPUs or cores which will be able to run link steps in parallel at any given point.
Allow non-distributable custom steps to run in parallel locally:
This option determines if custom steps/rules that have not been marked for distribution (using the rem IncrediBuild_AllowRemote directive) will be allowed to run concurrently on the local machine. When this option is not selected, all non-distributable custom steps/rules will run sequentially.
Relevant for Visual Studio 2008 and earlier.
Executing multiple links in parallel can significantly improve performance of a build. It is recommended to experiment with this flag to see the maximum number of links that can be run in parallel.
Build all projects regardless of errors
When this option is selected, IncrediBuild continues to build remaining configurations in builds, even if a dependent configuration failed with a build error. This option can be overridden per project, by selecting a different value when building that project using the /wiki/spaces/ITK/pages/783843560. The new option remains in effect for subsequent builds.
The Advanced page contains advanced settings that affect Visual Studio builds initiated by this Agent:
Build Options (Visual Studio .NET / 2005 / 2008)
Build non-C/C++ projects
When this option is selected, IncrediBuild builds non-C/C++ (Visual Basic, C#, deployment) projects on the local machine. Select this option if you have mixed (C/C++ and non-C/C++) projects in your solution. To build the non-C/C++ projects, IncrediBuild spawns a child process running devenv.exe with the /build parameter to build that project.
Disabling this option makes IncrediBuild ignore non-C/C++ projects.
Build non-C/C++ projects in parallel locally (when possible)
When this option is selected, non C/C++ projects (C#, VB, etc.) are built in parallel on the local machine's CPUs/cores (on Agents which have the "Multiple CPUs/Cores" extension package). This option is deselected by default because, in some cases, running C# projects in parallel can lead to file access conflict errors.
Use Environment variables instead of IDE paths
When this option is selected, IncrediBuild uses the local environment variables INCLUDE, LIB, and PATH instead of the variables set in the IDE.
Predictive Execution (Visual Studio 2010 and higher)
Enhance throughput using out-of-order tasks spawning
Enabling this option (VS2010 and higher) may highly improve build performance by instructing IncrediBuild to execute Visual Studio tasks (compilation, link, RC etc.) in an optimized order and not necessarily in the same order as Visual Studio would have executed them.
IncrediBuild will try increasing Visual Studio’s build tasks throughput thus potentially increasing the build performance and CPU utilization.
Consider the following scenario: project B depends on project A. Normally, both Visual Studio and IncrediBuild will first finish compiling and linking the entire A project before proceeding with project B. With “predictive execution” enabled, IncrediBuild may conclude that some compilation tasks from project B can be executed simultaneously with tasks from project A.
The predictive execution feature is currently not supported and should be disabled, for the following platforms / compilers: WiiU, Café, Nintendo 3DS and CUDA compiler.
Do not enable the “predictive execution” feature on a machine using any of these tools.
PDB File Allocation
Limit Concurrent PDB file instances to X
When this option is selected, IncrediBuild limits the number of files belonging to the same project that can be built concurrently. This results in a smaller number of PDB files and a speedup in link times. Selecting this option also limits the potential for parallelization in builds, meaning that the number of compilations that can run in parallel for a specific project cannot be more than the number selected here. For example, if you have two projects that can run in parallel, and you select in this option to limit concurrent PDB file instances to 8. Assuming each project contains 100 compilations, sixteen compilations will run in parallel – eight compilations from project A and eight compilations from project B.
It is recommended to experiment with different values before using this option. Generally speaking, this feature is more suitable for solutions containing a large number of projects, as having more projects leaves room for better parallelization.
When this option is selected, IncrediBuild will run builds under Visual Studio using the native 64-bit toolset of Visual Studio, instead of the default 32-bit toolset. This option will only affect builds running under VS 2013 and VS 2015.
Choosing this option can add some limited performance along with solving various Linker memory related problems such as LNK1318 as the Linker will be able to use more memory.
The Linker page contains settings that affect the link stage in Visual Studio builds:
Link Options (Visual Studio 6.0)
Don't separate types when linking
This option instructs IncrediBuild to always use the /pdbtype:con linker option, even when /pdbtype:sept is explicitly stated in the project. Selecting this option causes IncrediBuild to store the entire project's debug information in a single PDB file, rather than in several files. Note that since IncrediBuild creates distinct PDB files for each Agent participating in a build, any script that accesses the project's debug information files must take this into account when this option is not selected.
IncrediLink (Visual Studio .NET / 2005 / 2008)
By default, enable IncrediLink
Enables IncrediLink mode which speeds up incremental linking.
In Visual Studio 2005/2008, enable IncrediLink
Controls how the IncrediLink option corresponds to the functionally equivalent "Use Library Dependency Inputs" Visual Studio project setting.
The Browse Information page controls how this Agent creates project browse information.
Browse Information Creation
MSVC's browse information feature enables source code navigation to symbol definitions and declarations, automatic completion of function parameters, and other useful features. When in use, the compiler generates a file with the .SBR extension for each source file. At the end of each build, browse information is generated by running the BSCMake tool that "links" the .SBR files into a single file (with the .BSC extension) used by MSVC for browse information. Generating browse information can slow down builds; therefore, it is not always used.
IncrediBuild provides the following behavior options in the context of browse information creation:
Always generate .SBR files according to project settings
When selected, this option generates .SBR files (used to build browse information) only if the project settings for the configuration being built specify "Generate browse info" in the C/C++ page (VC6.0) or "Enable browse information" in the C/C++->Browse information page (VC.NET). Deselecting this option causes IncrediBuild to determine whether to generate .SBR files or not to according to the "Generate .BSC file" setting. This may result in interoperability problems when using both IncrediBuild and MSVC to build a project that uses precompiled headers.
Generate .BSC (Source Browser database) file:
This option controls whether IncrediBuild will run the BSCMake step, which builds browse information. The following options are available:
- According to 'Generate browse info' project setting – THe C/C++ page in MSVC's Project Settings dialog defines whether .SBR files are generated when compiling. This setting causes IncrediBuild to create browse information only if the 'Generate browse info' Project Settings option is selected. Note that the 'Build browse info file' setting (found under the "Browse Info" page in the project settings dialog) does not affect IncrediBuild's behavior in any way.
- Never – Do not generate browse information in any case. This is the default option.
- Always – Always generate browse information.
- Only for configurations containing these words – Allows specification of a list of strings for IncrediBuild to look for in the configuration name. If one or more is found, browse information will be generated for that configuration. Multiple strings can be entered and separated by a comma or semicolon character. If, for example, the string "Debug" is used in this option, IncrediBuild will generate browse information for all configurations containing the word "Debug". Note that the keyword search is not case sensitive.
The Interoperability page controls the state of IncrediBuild's interoperability mode. When interoperability mode is enabled, intermediate files generated by IncrediBuild and those generated by Visual Studio can be used interchangeably. When interoperability mode is disabled, it may not be possible to build projects that use precompiled headers and contain .OBJ files compiled by mixed sources (IncrediBuild and standard MSVC builds).
Note that interoperability mode is required and activated for:
- Visual Studio .NET (all platforms)
- Visual Studio 2005 (all platforms)
- Visual Studio 2008 (non-Win32 platforms only).
When interoperability is enabled, the Microsoft compiler executable (cl.exe) is modified and a dependency on "xgInterop.dll", an IncrediBuild dynamic library stored in the Windows System32 folder, is added to it in order to enable the IncrediBuild/Visual Studio interoperability.
Disabling interoperability restores the compiler executable to its original state and removes the additional dependency.
Visual Studio .NET / 2005 / 2008 Interoperability
The following action buttons are available:
Enable – enables Visual Studio interoperability
Disable – disables Visual Studio interoperability
The display lists all build platforms for which interoperability mode applies, along with their corresponding compiler file path.