Share via


/INCREMENTAL (Link Incrementally)

 

The latest version of this topic can be found at -INCREMENTAL (Link Incrementally).

INCREMENTAL[:NO]

  
## Remarks  
 Controls how the linker handles incremental linking.  
  
 By default, the linker runs in incremental mode. To override a default incremental link, specify /INCREMENTAL:NO.  
  
 An incrementally linked program is functionally equivalent to a program that is non-incrementally linked. However, because it is prepared for subsequent incremental links, an incrementally linked executable, static library, or dynamic-link library file:  
  
-  Is larger than a non-incrementally linked program because of padding of code and data. Padding enables the linker to increase the size of functions and data without recreating the file.  
  
-  May contain jump thunks to handle relocation of functions to new addresses.  
  
    > [!NOTE]
    >  To ensure that your final release build does not contain padding or thunks, link your program non-incrementally.  
  
 To link incrementally regardless of the default, specify /INCREMENTAL. When this option is selected, the linker issues a warning if it cannot link incrementally, and then links the program non-incrementally. Certain options and situations override /INCREMENTAL.  
  
 Most programs can be linked incrementally. However, some changes are too great, and some options are incompatible with incremental linking. LINK performs a full link if any of the following options are specified:  
  
-  Link Incrementally is not selected (/INCREMENTAL:NO)  
  
-  /OPT:REF is selected  
  
-  /OPT:ICF is selected  
  
-  /OPT:LBR is selected  
  
-  /ORDER is selected  
  
 /INCREMENTAL is implied when [/DEBUG](../Topic/-DEBUG%20\(Generate%20Debug%20Info\).md) is specified.  
  
 Additionally, LINK performs a full link if any of the following situations occur:  
  
-  The incremental status (.ilk) file is missing. (LINK creates a new .ilk file in preparation for subsequent incremental linking.)  
  
-  There is no write permission for the .ilk file. (LINK ignores the .ilk file and links non-incrementally.)  
  
-  The .exe or .dll output file is missing.  
  
-  The timestamp of the .ilk, .exe, or .dll is changed.  
  
-  A LINK option is changed. Most LINK options, when changed between builds, cause a full link.  
  
-  An object (.obj) file is added or omitted.  
  
### To set this linker option in the Visual Studio development environment  
  
1.  Open the project's **Property Pages** dialog box. For details, see [Working with Project Properties](../Topic/Working%20with%20Project%20Properties.md).  
  
2.  Select the **Linker** folder.  
  
3.  Select the **General** property page.  
  
4.  Modify the **Enable Incremental Linking** property.  
  
### To set this linker option programmatically  
  
1.  See [LinkIncremental](assetId:///P:Microsoft.VisualStudio.VCProjectEngine.VCLinkerTool.LinkIncremental?qualifyHint=False&autoUpgrade=True).  
  
## See Also  
 [Setting Linker Options](../Topic/Setting%20Linker%20Options.md)   
 [Linker Options](../Topic/Linker%20Options.md)