Output File Definition Directives
Overview
The output file definition directives are used to explicitly declare output files created by Visual Studio custom build steps, build events, and custom build rules. This is required in two scenarios:
1. Distribution of Custom Build Steps, Custom Build Rules, and Build Events
When one of the above tasks is distributed, it is necessary to explicitly declare any output files created by the distributed task in order for these files to be copied back to the initiating machine when the step has run.
With custom build steps, it is also possible to use the "Output Files" field in the custom build step property dialog to declare output files.
See here for more details on distributing custom build steps, custom build rules, and build events.
2. Minimal Directory Synchronization Mode
When used in conjunction with the minimal directory synchronization mode, the directives declare that the step modifies a specified set of files.
When operating in this mode, IncrediBuild performs additional source-file timestamp-checking throughout a build only when there is an indication that the source file may have changed as a result of a build step. Therefore, it is essential that build steps that modify source files declare this explicitly. Failing to do so may result in build errors, older versions of these files being used in the build, or certain build steps not being performed due to IncrediBuild being oblivious to the fact that their input files have changed.
MSVC provides the ability to define a set of output files for custom build steps (both file-level and project-level), but does not provide a way for defining this with pre-build/pre-link/post-build steps. IncrediBuild's output file definition directives complete this functionality.
The Directives
To use one of the output file definition directives in a custom, pre-build, pre-link, or post-build step, enter it as one of the command lines for that step, preceded by a "Rem" (remark) directive (see examples below).
IncrediBuild_OutputFile
The IncrediBuild_OutputFile directive specifies that an output file matching the given string may be modified or created by this step. Several IncrediBuild_OutputFile directives may be used (each in a separate line) in one step, to specify several output files. The directive should be followed by the path and name of the output file. Wildcard expressions may also be used. For example:
Rem IncrediBuild_OutputFile $(EnvDefinedFile)
Rem IncrediBuild_OutputFile c:\out\*.obj
IncrediBuild_OutputFileMask
The IncrediBuild_OutputFileMask directive specifies that an output file matching the given string may be modified or created by this step in any folder on the file system. Several IncrediBuild_OutputFileMask directives may be used (each in a separate line) in one step, to specify several output files masks. The directive should be followed by a standard wildcard expression specifying the file name (do not enter folder paths with this directive as it implies "any location"). For example:
Rem IncrediBuild_OutputFileMask Res??.txt
IncrediBuild_OutputDir
The IncrediBuild_OutputDir directive specifies that any file in a single directory may be modified by this step. Several IncrediBuild_OutputDir directives may be used (each in a separate line) in one step, to specify several directories. The directive should be followed by the name of the directory. For example:
Rem IncrediBuild_OutputDir $(EnvDefinedDir)
IncrediBuild_OutputDirTree
The IncrediBuild_OutputDirTree directive is identical to the IncrediBuild_OutputDir directive, except for the fact that it indicates that files not only in the specified directory, but also in all of its subdirectories, may be changed by this step.
Rem IncrediBuild_OutputDirTree $(EnvDefinedDir)
The IncrediBuild_OutputDirTree directive currently can only be used in conjunction with the minimal directory synchronization mode, and cannot be used to specify output files for distributed tasks.
IncrediBuild_OutputReset
The IncrediBuild_OutputReset directive, when using the minimal directory synchronization mode, notifies IncrediBuild that after running this step any source file could have been modified, and therefore all source-file timestamps must be rechecked before use. The IncrediBuild_OutputReset directive is used with no additional parameters. For example:
The IncrediBuild_OutputDirTree directive currently can only be used in conjunction with the Minimal Directory Synchronization mode, and cannot be used to specify output files for distributed tasks.
Note: All directives that accept files/directories as parameters can accept absolute and relative paths, as well as environment variables (see example above).
Visual Studio 2008 and Earlier:
(VS 2008 and Earlier) VS Solutions Settings
(VS 2008 and Earlier) The IncrediBuild_RunFirst Directive
(VS 2008 and Earlier) Dependency Issues
(VS 2008 and Earlier) Output File Definition Directives
(VS 2008 and Earlier) Using the IncrediLink Option
Customizing Microsoft Visual C++ 6.0 Integration
Using IncrediBuild for Microsoft Visual Studio .NET/2005/2008
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