Note:
- This feature is relevant only for VS 2008 and earlier.
This section describes how to speed up incremental links in Visual Studio .NET, 2005, and 2008 using the IncrediLink option.
Overview
The IncrediLink option can speed up incremental links from several minutes to as little as a few seconds. It does this by combining Visual Studio's incremental linking option and modifying the link.exe command line, so that references to LIB files are replaced by references to the OBJ files, which make up that LIB file (wherever possible). The latter modification is required in order for the incremental linking feature to be effective in solutions consisting of LIB projects, which are linked into the main project(s).
Enabling IncrediLink
To turn on IncrediLink, select the "By default, enable IncrediLink" option in the Agent Settings under Visual Studio Builds on the linker page.
Two modes are available when this option is active:
- According to "Enable Incremental Linking" project setting – In this mode, IncrediLink is activated only for projects that have "Incremental Linking" turned on. Note that since Incremental Linking is enabled by default, this includes all projects that don't have Incremental Linking specifically disabled.
- For all projects – In this mode, IncrediLink is activated for all projects.
- The Do not create libraries checkbox controls whether IncrediBuild skips the link step of LIB projects whose OBJ files IncrediLink embeds into their parent project's link command line. As these LIB projects' OBJ files are linked into the main executable/DLL, it is often possible to save additional build time by avoiding these LIB projects' link step.
For Visual Studio 2005/2008 builds, a choice is given between the standard mode of operation ("According to IncrediBuild default setting") or the "According to 'use Library Dependency Inputs' project option" setting, which will cause IncrediLink to be activated only for projects which have this setting activated in the project's properties (the 'Use library Dependency Inputs' property is Visual Studio 2005/2008's equivalent setting to IncrediLink).
Note:
- IncrediLink only affects linkage of DLL and EXE projects.
Considerations
There are a few things to consider with this feature turned on:
- Duplicate Symbol link error messages may show up if different library projects define the same symbol twice. This is because the linker is more tolerant to duplicate symbols residing in libraries than it is to duplicate symbols defined in different object files. If this happens, change your code to include each symbol definition once.
- Missing Function body link errors may show up. To work around this, add function body stubs to your code.
- Symbols that are not referenced anywhere in the code are still included in the final output (with regular links, they are ignored).
Visual Studio Reference:
Batch Build Configurations
Accelerating Custom Build Steps, Build Events, and Build Tools
C# Acceleration
Using IncrediBuild for Visual Studio 2010 and Later
Further VS Build Performance Optimizations
Visual Studio 2008 and Earlier
IncrediBuild Solutions:
Visual Studio Solution
Make and Other Build Tools Solution
DevTools Solution
IncrediBuild for Qt Creator
IncrediBuild For Game Development
IncrediBuild for Unit Tests
Working with Build Groups
Running Gitlab Builds with Incredibuild
User Manual:
List of Open Sources
Getting Started
Set Up and Installation
IncrediBuild Solutions
The Coordinator
IncrediBuild Agents
IncrediBuild Cloud
Working from Home
Troubleshooting Issues
IncrediBuild Additional Resources
Release Notes