We do our best to provide answers to try and answer the most frequently asked questions in this section. If you do not find an answer here, or find the information provided unsatisfying, please let us know by sending mail to [email protected] and we will try to respond as promptly as possible.
You might also want to visit our Knowledge Base for a variety of articles.
How do I Install and run IncrediBuild?
These videos will teach you how to install and run IncrediBuild on your local machine using the default installation process. 10 minutes and you are up and running saving time!
After you accept the licensing agreement, select both the Agent and the Coordinator to install. You do not need to install the backup coordinator. You do not need to change the installation folder, any of the ports, or file cache size- you may keep them all on their default settings. At this point, you may notice an exclamation mark next to the IncrediBuild icon. This is to remind you to load the license file (which you will receive to your email after registering in our website) for the Coordinator. Simply click the license file and wait for the confirmation message. You now have both the coordinator and the agent installed on your machine. Now that you have it installed, watch the next video to learn how to use it.
Am I creating a dependency of any kind on IncrediBuild? Can I still use Visual Studio's Build command with IncrediBuild installed on my machine?
Visual Studio can be used at all times regardless of IncrediBuild’s presence. What this means is that you always have the option to build without IncrediBuild. If build scripts are used, they will have to undergo a minor change (replacing VC’s command-line build tool with IncrediBuild’s).
Am I required to make changes in my C++ project for IncrediBuild to work?
No. IncrediBuild will build any C/C++ project that can be built using Visual Studio.
How will the Microsoft Visual Studio environment change after installing IncrediBuild?
An IncrediBuild menu and toolbar containing Build, Rebuild, Clean, Batch Build and Stop Current Build commands will become available. Simply use these commands instead of Visual Studio. When building, the output will be displayed in a special “Build Monitor” display (also integrated with the environment), that will contain the build output as well as many other useful features such as a build status bar, a visual display of the progress, timings and so on.
Here is a small sample of the build monitor:
Can IncrediBuild be used from the command-line or build scripts?
Yes. IncrediBuild includes a rich command-line interface for compiling, which can easily be integrated into any script that runs msbuild.exe/devenv.exe to build projects. In fact, BuildConsole.exe supports the devenv/msbuild command line syntax so you would typically only need to replace the executable name in your script!
Which portions of my build will IncrediBuild distribute when building Visual Studio projects?
IncrediBuild will distribute C/C++ compilation and MIDL steps. Also, any custom build steps, build events (pre-build, pre-link, post-build) and files running custom rules may be distributed using the Dev Tools Interfaces solution.
How can I know how effective IncrediBuild will be when used to compile my C++ project?
The best way is to simply try it. However, experience shows that in the vast majority of projects that are over just a few files in size, IncrediBuild will reduce full build time down to around 10%-30%, and incremental build times to anything between 10% and 75% (Depending on the number of files being recompiled).
Since IncrediBuild was designed for large builds, the bigger your Solution is – the better your acceleration potential with IncrediBuild will be.
What types of file formats can IncrediBuild accept as input?
IncrediBuild is compatible with Microsoft Visual C++ 2010, 2012, 2013, 2015, 2017 VCXPROJ & .SLN Files, MSVC 2008/2005/.NET .VCPROJ & .SLN files, Intel C++ Compiler .icproj files, embedded VC 4.0 .vcw/.vcp files and Microsoft Visual C++ 6.0 project DSP/DSW files
Can IncrediBuild alter the compilation or link process, potentially creating problems in the build output?
No. IncrediBuild uses the same executables for all build steps (compilation, linking, etc.). IncrediBuild is not a new compiler, but rather a more efficient method of using your compiler.
IncrediBuild has an extra acceleration feature (Predictive Execution) which can run parts of dependent projects in parallel and provide up to additional 10-15% acceleration. However, the core dependency will remain and the files that will be built in parallel are not crucial for the dependency itself so the dependency will not be violated.
Can IncrediBuild slow down other user's machines in my organization as a result of the distributed compilation process?
IncrediBuild Agents automatically adjust their behavior according to the activity level in the machine they are installed on. By default, Agents run compilations with a process priority that’s lower than that of other processes in the system. This makes the operating system allocate fewer CPU resources to IncrediBuild than to user and operating system processes. So, a computer that is unused will be running IncrediBuild at full pace, while on a more active computer the Agent will maintain its activity at a lower level. Normally, users do not even feel the presence of an IncrediBuild Agent on their machine.
What are the software/hardware prerequisites for installing IncrediBuild?
IncrediBuild runs on Windows XP, 2003, Vista and Windows 7 / 8.1 / 10 versions, on any TCP/IP-based network. Microsoft Visual C++ 2013, 2012, 2010, 2008, 2005, .NET & 6.0 (Visual Studio Express doesn’t support add-ons but IncrediBuild can be used from the command line in that case) are required for Agents that run Visual Studio builds. Helper Agents (Agents that are used only as a “passive” resource and do not initiate builds) do not require any special software.
The minimal hardware configuration is an Intel Core i3, 4GB RAM and 1000 Mbps network connection.
Won't IncrediBuild use up all of my LAN bandwidth?
No. A lot of effort has been put into network optimization tactics such as caching and compression to make sure network traffic will be kept to a minimum. In standard networks IncrediBuild’s presence is hardly felt at all, even when several compilations are taking place.
My workstations do not share the same configuration. They have different operating systems, versions of Visual Studio’s, service packs, dll versions etc. Will this pose any problems?
When executing build operations on a remote Agent, all actions are performed using a “Virtual Environment” that acts as a copy of the original building machine’s environment. This means that the compiler executables used in the compilation will be identical to those found in the building machine. In fact, they don’t even have to exist on the remote Agent and blank Windows will do!
I noticed a folder named "File Cache" under my IncrediBuild installation folder that's taking up a lot of disk space. What does it do?
This folder caches source files transferred from remote Agents, in order to speed up distributed builds. It should be large enough to accommodate all of your source tree and any system include files being used. The folder size and location can be adjusted from the Agent Settings dialog and the Coordinator monitor. Although it should be large enough to accommodate all of your source tree it is recommneded to keep it as small as possible (and not just to set it to maximum size) since it will allow faster indexing and faster build on the remote Agent.
How can I adjust my scripts to identify if a build was run with IncrediBuild?
IncrediBuild automatically defines an environment variable called “XoreaxBuildContext”, that has the value “1” when running builds. Your custom build steps can query this environment variable to see if the build is being run with IncrediBuild.
Alternatively, on the machine that starts the build the buildSystem.exe will be present and on remote machines during the build the BuildHelper.exe process will be present.
I understand that IncrediBuild is using network protocols to move files around and execute programs. What precautions have you taken to make IncrediBuild safe from security threats?
To start off, IncrediBuild’s license configuration lists the Agents that are “authorized” to participate in the system, protecting your environment from potential attempts to misuse the system from outside the authorized working group. A lot of attention has been put into making the network protocols as safe as possible from internal threats, as well. Finally, all file activity is done within a closed virtual environment, to make sure that your files will not be harmed even in the case of these measures failing to stop an attempt to misuse the system. In addition to these measures IncrediBuild will also benefit from any security infrastructure (firewalls etc.) installed in your organization.
I'm using precompiled headers in my project. Does IncrediBuild support this? Is there anything I should be aware of regarding precompiled headers?
Yes, IncrediBuild supports projects using Precompiled Headers and will accelerate projects using PCHs. Specifically, “Automatic” PCHs have been known to slow down builds when used with IncrediBuild, and our recommendation if you are using automatic PCHs is to either switch to using a standard header-based PCH or disable PCHs altogether.
I'm using Visual Studio's browse information functionality. Will this still be available to me if I use IncrediBuild?
Yes, IncrediBuild supports the creation of browse information files.
Some of my projects contain custom, pre-build, pre-link and post-build steps. Will IncrediBuild cope with that?
Yes. Custom build steps and build events are executed locally on the building machine by default (if that machine has more than one CPU, several steps can run in parallel on each CPU).
There is also an option to configure the steps to run remotely using certain adjustments in the custom step properties which can be seen here:
My project uses COM objects, and requires DLL's and type libraries to compile some of my files. How does IncrediBuild handle this?
All compilation is done from within a virtual mirror environment that acts as a copy of the building machine’s environment. This means that regardless of what files and DLLs are on the remote machine, it will produce a compilation output that’s based on the DLLs and files found on the original machine.
Some of my source files are located on network drives. How will this affect IncrediBuild's behavior and performance?
IncrediBuild can access files located on the network. In fact, it is actually more effective in this case. Because of its caching mechanism, IncrediBuild will give even better results compared to Visual Studio / other build tools when compiling projects that include files located on the network.
How does IncrediBuild determine which machines will participate in a build?
The IncrediBuild Coordinator is aware of each Agent’s CPU strength, current CPU activity level, and other factors that can affect the Agent’s effectiveness in the compilation. Those factors are represented in the “Performance Rating” in the main coordinator monitor (View -> Columns -> Hardware -> Performance Rating:
When a build starts, the Coordinator assigns the most effective Agents currently available to that build. This initial assignment may change throughout the build as the Agent’s availability changes. For example, if a user starts a CPU-intensive task on a machine participating in a remote build, that machine will most probably stop compiling immediately, and another machine will be assigned to that build in its place.
What happens if several Agents start a build simultaneously?
In this case, the IncrediBuild Coordinator will attempt to assign Agents to the builds in a manner that will give each of the builds an equally high share of the available CPU in the system.
What happens if the Coordinator becomes unavailable for some reason during a build?
Although the Coordinator manages the resources available for remote compilation, it is not a critical component for builds to succeed. If a build has started and the Coordinator component is for some reason unavailable, the build will continue with its current Agent assignments until it is done building. Subsequent builds will work in standalone mode until the Coordinator becomes available again. For the highest possible level of availability, you may install a “Backup Coordinator”, which will automatically take control if the main Coordinator becomes unavailable.
Please note that the ‘backup coordinator’ purpose is to manage the resources only (until the main coordinator will be back online) and it can’t perform any other actions – such as license package assignment, subscription, etc.
What happens if an Agent that is compiling for a remote machine suddenly becomes unavailable during a build?
If the Agent becomes unavailable or is simply too busy to be effective in the compilation, it will simply stop working, and the file that it has been compiling will be reassigned to another Agent. The build will continue uninterrupted.
I'm using a compiler/linker different from Visual Studio for better code optimization. I still develop and build my project using Visual Studio. Will IncrediBuild support the compiler I'm using?
IncrediBuild currently supports Microsoft’s cl.exe, Csc, Intel Compiler, Nvcc, tcc, dcc and Xbox, PS4 and Nintendo Platforms. Additional compilers may be supported in the future so it is best to have a look at the following list:
The XGE Interfaces solution can be used with a variety of build tools and scripts to run compilers that are not currently supported.
What programming languages does IncrediBuild accelerate?
IncrediBuild can currently accelerate C/C++ and C# code.
Does IncrediBuild support multi-threading?
IncrediBuild does support that but it wont be able to accelerate it. The reason for that is that IncrediBuild relays on a multi process capability of your code / tool to run in parallel on several cores. Once this condition is met, IncrediBuild can exploit your entire grid in order to use all the cores for your builds.
What gaming Platforms IncrediBuild supports?
IncrediBuild currently supports the following gaming platforms: Xbox 360 / One, Nintendo 3DS / Switch / Wii U and Play Station.
Can I use IncrediBuild on a standalone machine?
Yes – with multiple-core machines, you can use IncrediBuild to exploit both the machines’ processors and substantially improve compilation speed. In addition, due to our extra acceleration feature (Predictive Execution) which is enabled by default for our C++ builds, you will be able to see build acceleration also in standalone mode comparing to regular Visual Studio builds.
Am I required to manually copy files between machines, register DLLs or perform any preliminary action after installing IncrediBuild for my project to compile?
No, IncrediBuild will handle all of the synchronization itself, and will do it within a virtual environment – the computer’s file system will be left unchanged, no DLLs will be installed etc.
How many Agents can there be in an IncrediBuild environment?
One IncrediBuild Coordinator will effectively serve up to approximately 500 Agents. In cases where more Agents are required, we recommend splitting the environment into workgroups, each with its own Coordinator.
Is it OK to install an Agent on the same machine as the Coordinator?
It is perfectly OK, and even common practice. The Coordinator is a lightweight component that does not take a lot of resources. Try not installing both on a machine with particularly weak hardware and since the Coordinator manages the grid resources you have to make sure that this machine will remain online at all time.
Can I build C# projects with IncrediBuild?
Yes. C# acceleration is supported with Visual Studio 2010 and newer versions. Note that C# projects are distributed on the Project level (1 C# project = 1 IncrediBuild Task), so solutions that will gain the most benefit from this feature solution with multiple C# projects and mixed C++/C# solutions.
Can I build VB projects with IncrediBuild?
Yes. IncrediBuild builds VB projects on the local machine only. While this will provide support for your solution, the only performance gain will be in the C/C++ and C# project sections.
Can I build makefile-based projects with IncrediBuild?
Using IncrediBuild for Make & Build Tools, IncrediBuild can distribute builds run by a variety of make and build tools. For full list, please have a look here
I am using Code Analysis – can IncrediBuild accelerate it?
Yes! IncrediBuild currently support Klockworks and Coverity acceleration.
In both cases, IncrediBuild will generate a build trace file (JSON) as part of the regular build which will be used by Klocworks and/or Coverity for the Analysis phase. With Klocworks, IncrediBuild can also accelerate the analysis phase itself.
For more information it will be best to contact our support team: [email protected]
As part of my Visual Studio build, I need certain files that are being generated on the remote machines to synchronize back to the local machine. How can I do that?
It is possible to define which files will be returned to the local (Initiator) machine.
Here is how it can be configured:
1. On the Coordinator machine, right click on the IncrediBuild tray icon -> Coordinator Monitor
2. In the Coordinator Monitor, you will see a list of all the agents.
3. Mark the initiator agent -> Right click -> Set Registry Value…
4. Make sure that the “Value Category” is set to “Builder”
5. Under “Name” please write: AdditionalOutputMasks
6. Under “Data” please write the file you wish to be returned to the Initiator. For example: *.txt – if you wish that all *.txt files will be returned to the Initiator.
One of my projects must be built on the local machine due to specific requirements. How can I set a certain project to be built locally?
In order to mark a project to build only locally right click the project in Visual Studio, select “Properties”->”Configuration Properties”->”C/C++”->”Preprocessor Definitions” and add the string:
With VS2008 and below, use “Solution Settings” under IncrediBuild menu.
This can be also set per file. Simply add the IB_RunLocal to the Preprocessor Definitions of a certain file that has to be built only locally.
How can I use IncrediBuild in a non Visual Studio environment (just MSBuild.exe)?
In order to have IncrediBuild run in a non-Visual-Studio environment, you can set up the free Microsoft MSBuild on your environment and after making sure your MSBuild build command works without IncrediBuild simply use the following sample build command:
BuildConsole.exe MySln.sln /rebuild /cfg=”Debug|Win32″ /UseMSBuild /msbuildargs=”/myarg1 /myarg2″
For explanation regarding the command line build command and special switches see:
I've noticed some files with the "vc[NUMBER]_ib_X.pdb" ([NUMBER] is the VC version - "90", "100, 120" etc and X can be 0,1,2 etc) appear in the intermediate directory of my project during the IncrediBuild operation. Why does this occur?
This is normal. IncrediBuild generates separate debug information and .idb / .pdb files for each of the Agents participating in the build, and these are stored in the intermediate folder. This is true for Visual Studio version up to 2012. Starting from 2012, You will see those files per remote core. For example, if you have one remote Agent with 8 cores, you will see 8 of those temp files.
I'm comparing OBJ/EXE files that Visual Studio created to those of IncrediBuild - and they're not the same. Why?
There are some differences between IncrediBuild’s output and Visual Studio’s, caused by debug information placement, timestamps in the binary files, OBJ file order in the linking phase and so on. This is normal and will not affect the application’s behavior.
How can a user disable an Agent from participating in others builds temporarily to make sure IncrediBuild will not use the machine's CPU?
By right-clicking on the IncrediBuild tray-icon and choosing “Disable Agent”. This can also be done remotely from the Coordinator application.
I've changed some of the directories in the "Directories" tab under the tools->Options menu in my Visual Studio, and my change doesn't seem to have an effect on IncrediBuild. Is this OK?
The directories in these settings should only be used for system-wide settings, as they will affect all projects compiled on that machine. Project-level settings should always be done via the “Project Settings” dialog. Visual Studio stores any new or modified directory information when it is closed, so for IncrediBuild to be aware of the new system directories Visual Studio must be closed once after modifying the information.
I'm trying to run BuildConsole from the command line but keep getting the "'BuildConsole' is not recognized as an internal or external command, operable program or batch file." error. Why?
The PATH environment variable is not set to the IncrediBuild installation folder. Please make sure that that your PATH environment variable contains the correct path to BuildConsole.exe.
When building projects, only my machine's Agent participates in the build!
This can be caused by a number of reasons:
1. The Agent on your machine is not subscribed on the Coordinator machine. Check with your system administrator to see if your license allows adding your machine to the list of subscribed Agents.
2. The solution required for building the project is not allocated to your Agent. Allocating build system packages is done from the Coordinator application. Check with your system administrator to see if your license allows allocation of the required solution to your machine.
3. The project contains a very small amount of files and therefore they do not get distributed between the Agents.
In order to verify it – open the build monitor View -> View System Graphs In order to select graphs which will show you specific information (View ->Select System Graphs -> Ready Tasks) . When you select “Ready Tasks”, you will see that when you hover with your mouse above the graph area at any time slot – you’d be able to check your parallel “Ready Tasks” amount. If the amount of those tasks is less than your local cores – the behavior is normal.
4. The Coordinator name or port set in the Agent Settings dialog in your machine is incorrect. Check your Messages tab in the Build Monitor to see if there any such warning.
5. The Coordinator is currently unavailable, either because the machine it is running on is shut down or disconnected from the network, or because the Coordinator service is not active. Check your Messages tab in the Build Monitor to see if there any such warning.
6. Your machine is disconnected from the network. Check network cable and settings.
7. Network security restrictions are blocking TCP/IP access from your machine to either the Coordinator machine or the Agent machines in the network.
8. You might have a problem connecting to remote Agent due to some network restrictions. Check your Messages tab in the Build Monitor to see if you have “Failed to connect…port 31105” warnings. If so, please consult with your system administrator in order to check why the remote port is blocked.
9. Your trial period of IncrediBuild has expired.
I can't see the IncrediBuild tray-icon display. How do I restore it?
Select “Programs files->Xoreax IncrediBuild->IncrediBuild Agent Tray-Icon” from the Start menu to restore the tray-icon display. If you wish the IncrediBuild tray-icon always to be displayed, verify that the “Enable tray-icon display on system start-up” option is selected in the Agent Settings dialog “Tray-Icon” page.
I can't see the IncrediBuild menu in Microsoft Studio! Where's it gone?
Use the “Visual Studio Add-in” -> “General” section in the Agent Settings dialog to restore the menu. Make sure that the Visual Studio is closed. Locate the relevant Visual Studio version in the dialog and click “Restore Add-in”.
Browse information is not generated when building a project with IncrediBuild, although it is generated when building with Visual Studio. Why?
IncrediBuild keeps a global setting to determine whether to generate browse information or not. This can be set from the Agent Settings -> Visual Studio builds -> Browse Information. You may also override this setting for a particular project when building a project from the batch build dialog.
When compiling, I get a "No such file or directory" error on a header file/type library file.
Check if this file is generated by a custom build step or a MIDL step in another project in the Solution. If so, this may be caused by a missing inter-project dependency definition between the projects.
For more information, see the documentation section on “Dependency Issues” (under “Advanced Topics”):
When compiling, it seems that the compiler is using a different/out-of-date version of a header file/type library file.
See answer in previous question.
When running an incremental build with Visual Studio after building with IncrediBuild, I get the following build warning: "warning C4652: compiler option 'Generate Browser Info' inconsistent with precompiled header; current command-line option will override that defined in the precompiled header". What is wrong?
There is a conflict between IncrediBuild’s browse information creation options and the way Visual Studio handles browse information for that project. To overcome this, do one of the following:
If you wish to use browse information:
1. Set the configuration’s project settings to generate browse information (this is done by checking the browse info checkboxes on both the C/C++ page and the Browse info page in Visual Studio project settings dialog).
2. Set IncrediBuild’s browse information creation settings (in the Agent Settings dialog -> Visual Studio Builds -> Browse Information) to create browse information for this configuration (this can be done by selecting “Always” or “According to ‘Generate browse info’ project setting”, or by using a matching search phrase).
3. Rebuild the project.
If you do not wish to use browse information:
1. Set the configuration’s project settings NOT to generate browse information.
2. Set IncrediBuild’s browse information creation settings (in the Agent Settings dialog) NOT to create browse information for this configuration (this can be done by selecting “Never” or “According to ‘Generate browse info’ project setting”, or by using a matching search phrase).
The IncrediBuild Agent fails to start on my machine. What's wrong?
This could be happening for a number of reasons. Here are some initial steps to help understand the cause of this:
1. If the IncrediBuild Agent tray-icon display indicates an error graphic, click on the tray-icon once to display the last error encountered by the IncrediBuild Agent service, and see if this leads to the source of the problem.
2. Please open Windows Services and try to start the “IncrediBuild Agent” manually. If this also fails, please check if it fails due to permission problems. If so, please consult with your system administrator. If it starts only using this manual way, please consult with your system administrator since there might be a security restriction that prevents IncrediBuild from start its own Service on Windows Start-up.
When running a build, some Agents start compiling files, but stop before the compilation is finished, causing the file's compilation bar to disappear. What's wrong?
This can happen due to several reasons:
1. Network connectivity problem – please check the “Messages” tab in the build monitor file, and search for connectivity messages related to this remote Agent. In most cases, the Initiator machine simply loses connection with the remote machine due to network issues.
2. Deliberate race between processes – IncrediBuild, by default, might run the same process both on a remote machine and on the local machine when the local machine is not busy. This is an optimization feature since the first machine that finishes the task – wins . You can disable this feature in case you see that the remote machines are often canceling the tasks. The setting name is “restart remote processes on local machine when possible” and it is located in Agent Settings -> Initiator -> General.
I've installed a permanent/temporary IncrediBuild license, but when trying to build, I get a message saying my build will run in standalone mode. What am I doing wrong?
Either your Agent is unsubscribed, or the required build system solution has not been allocated to your Agent. To correct this, do the following:
1. Open the Coordinator Monitor on the main Coordinator Monitor machine.
2. Locate your Agent in the Agent list.
3. If the ‘Status’ column says ‘Unsubscribed’, right-click the Agent and select ‘Subscribe’. If the ‘Subscribe’ option is grayed out, your license has reached its limit of subscribed Agents and you must first unsubscribe some other Agent.
4. If the ‘Packages’ column specifies only one of the “Core” packages (i.e “4 core” package) or a different Solution package from the one you are using to build your project (i.e you build Visual Studio C++ solution but you have the “Make & Build package”), right-click the Agent and use the ‘Allocate Package’ option to allocate the appropriate build system solution package to your Agent.
I've installed a permanent/temporary IncrediBuild license supporting multiple CPUs/cores, but only one processor is used in builds. What should I do?
Your Agent is probably missing one of the “Core” packages. To correct this, do the following:
1. Open the Coordinator application.
2. Locate your Agent in the Agent list.
3. Right-click the Agent and select ‘Allocate Package-> select one of the “Core” packages (i.e “4 core” package). If this option is grayed out, your license has already allocated all of available packages and you must first de-allocate this package from one of the other Agents.
Why does the Coordinator show an Agent as 90%-100% CPU available while it's actually isn't?
If the screensaver is running, IB assumes the machine is available even if the screensaver takes up CPU. If the Agent on that machine is then used for compilation, the compiler will run as a high-priority process so it will get more CPU than the screen saver.
When building, I see two compilation bars showing the same file being compiled on two different machines. Is this normal?
Yes, this is actually an optimization feature – to prevent situations in which a build is slowed down due to a slow remote Agent, IncrediBuild will sometimes double a file’s compilation on the local machine to speed up the build. In this scenario, the same file could appear to be compiled twice.
The setting name is “restart remote processes on local machine when possible” and it is located in Agent Settings -> Initiator -> General. You can disable this feature in case you feel that it damages your performance and not improving them.
What's the difference between IncrediBuild and the Visual Studio /MP flag?
There are various advantages to using IncrediBuild over the /MP flag.
According to MSDN,
on this subject, /MP, as opposed to IncrediBuild, isn’t supported when any of the following is used: #import preprocessor directive, /E, /EP, /Gm, /showIncludes, /Yc.
When different CPP files have different compiler directives, /MP won’t execute them in parallel. IncrediBuild will.
IncrediBuild is better adapted to scenarios in which there are dependencies between projects. If project B depends on project A, IncrediBuild can execute the compilations of project B and project A in parallel if possible.
IncrediBuild introduces a Batch Build feature that allows executing multiple configurations in parallel (assuming the build is properly configured to support parallel configuration compilations).
IncrediBuild introduces a flag (Rem IncrediBuild_AllowOverlap), that once added to custom build steps or build events, will instruct IncrediBuild to proceed to the next build task in parallel to executing the custom step or build event.
For more information see:
IncrediBuild provides developers with the ability to configure the execution of custom build tools and build rules to execute in parallel under certain conditions, while the default Visual Studio behavior would be to always execute these tasks sequentially. For example, in a QT build, the moc steps which is a code generation custom build tool can be executed in a parallel manner with IncrediBuild instead of sequentially.
The above features significantly enhance the compilation’s parallel throughput. Combining them with IncrediBuld’s distributed computing tech, which distributes processes to remote CPU resources for parallel processing, is what results in a dramatic shorter build time by up to 90% or more.
When I build with IncrediBuild and the build fails due to a real problem in the code, the error doesn’t show in IncrediBuild output. Why can’t I see the error?
If you are building with VS2010 and above, this behavior is related to the “Predictive Execution” feature that enhance the throughput using “out-of-order” task spawning. Due to this way of build, some of the output ,in case of a failure, may not yet reach the standard output. If you view the relevant project output in the “Project” tab inside the build monitor, you will see a “CL Preview” section which will show the actual error:
You can disable this feature in the following way in order to see the “regular” output:
On the Initiator machine, open Agent Settings -> Visual Studio Builds -> Advanced. Under Predictive Execution section, uncheck the Enhance throughput using out-of-order tasks spawning
We're using Incredibuild for Chromium based project. Chromium has build files generator called GN. It has a nice feature of autoregenerating ninja files if any of *.gn files has changed. The problem - when we run ninja from the Incredibuild, it can run GN as a regeneration step. In this case GN regenerates some of build files using the modified TMP path. After that, if we restart ninja, it can fail building or linking some files because this TMP dir is not available anymore.
For each build, IncrediBuild creates a temp subfolder under TMP with its own special temp files.
If there are two builds, one that generate a certain output that will be kept in the 1st subfolder and the 2nd build will need to use those files – the 2nd build will fail since IB deletes the previous tmp sub folder after each build.
In order to avoid TMP subfolder folder deletion, you should create the registry string value named LeaveTempDirs under HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Xoreax\IncrediBuild\Builder and set its value to 1
This will not delete those sub folders under the TMP folder after each IncrediBuild build so you will have to make sure to maintain the TMP folder size.
When I start the build with IncrediBuild in Visual Studio 2013 – nothing happens besides the following message: Microsoft Visual Studio 2013 Version 12.0.31101.0. Copyright (C) Microsoft Corp. All rights reserved. Some errors occurred during migration. For more information, see the migration report
This is a known issue that can happen also without IncrediBuild and it is seen with Visual Studio 2012 and 2013.
Here is a short procedure that should solve this problem:
1. open the CMD in the location of devenv.exe of your Visual Studio 2013 / 2012
2. Run the following command: devenv /resetuserdata general
This will reset the Visual Studio 2013 / 2102 settings and solve the problem.
Visual Studio 2008 and earlier:
It looks like some debug information is missing. Can this be related to IncrediBuild (MSVC 6.0-specific)?
This may be related to using of the “Separate Types” linker option. The “Separate Types” option (located in the “Linker” page, under MSVC’s Settings dialog) instructs the linker to leave debug information stored in the compiler generated PDB files, instead of generating a single PDB file for the entire project. When this option is used with IncrediBuild, separate PDB files are created for each Agent participating in the build. In this scenario, if you’re using debug information files that have been copied using scripts, some PDB files may not have been copied, resulting in loss of debug information. The recommended resolution is to turn off the “Separate types” linker option in the project (you can also use the built-in override option in the Agent Settings dialog). This will always guarantee a single PDB file for the project. Another alternative is to fix the relevant scripts.
I can't get Edit & Continue to work. What's wrong?
IncrediBuild supports Edit & Continue for certain Visual Studio versions only, but requires files to be used with this feature to be specified in advance using the solution Settings dialog. For more information see the following link:
I'm getting the following warning: "IncrediBuild: build system warning: #import directives in the precompiled header should use the no_implementation attribute. See FAQ section in the documentation for more details.". What's wrong?
IncrediBuild is notifying you of an #import directive that was found in the precompiled header source file, without the “no_implementation” keyword. This is problematic for two reasons:
1. You may get “file not found” compilation errors when a source file #includes a .TLI file that was generated by this PCH. Using #import with the “no_implementation” flag in the PCH file, as described below, will solve this.
2. Not using this keyword may slow down compilation as a result of larger PCH files.The following excerpt is from the MSDN Library “#import” topic:
“The implementation_only attribute is intended for use in conjunction with the no_implementation attribute as a way of keeping the implementations out of the precompiled header (PCH) file. An #import statement with the no_implementation attribute is placed in the source region used to create the PCH. The resulting PCH is used by a number of source files. An #import statement with the implementation_only attribute is then used outside the PCH region. You are required to use this statement only once in one of the source files. This will generate all the required wrapper member functions without additional recompilation for each source file.”
I'm getting the following warning: "One or more source files use automatic precompiled headers. This setting is not recommended and may degrade build performance. See FAQ section in documentation for more details." What's wrong?
Your project is using “Automatic” precompiled headers. When used with IncrediBuild, this setting will have a negative impact on build performance and is therefore not recommended. To resolve this situation, either use standard (header-based) precompiled headers or turn off use of precompiled headers altogether.
Please note that this is relevant ONLY for Visual Studio 6.0 and .NET 2003
Please note: this FAQ section refers only to IncrediBuild for Windows. For any questions regarding IncrediBuild for Linux, please contact [email protected]
We do our best to provide answers to try and answer the most frequently asked questions in this section. If you do not find an answer here, or find the information provides unsatisfying, please let us know by sending mail to [email protected] and we will try to respond as promptly as possible.
With questions related to Technical Information and Troubleshooting, please refer to our Technical FAQ page.
What are IncrediBuild “License”, “Coordinator”, “Agents”, “Maintenance” and “Solutions”?
A “License” represents a group of machines running on the same network and using IncrediBuild software to accelerate processes. When ordering a new license, the items purchased are “Agents” and “Solutions”. Renewing an existing license requires Agents’ Maintenance and Solutions fees.
A “Coordinator” is the IncrediBuild server component which is used to manage the license, assign users to machines, and synchronize the acts of sharing resources for the acceleration. It is provided for no charge upon the first purchase of the license.
“Agents” are the registered users. Each machine running IncrediBuild needs to have its own Agent with the appropriate number of cores. The Agent allows the machine to be a part of the IncrediBuild workgroup, and accelerate processes. Each Agent requires yearly Maintenance fees.
“Maintenance” is the yearly fee per Agent. It provides access to new versions, updates, fixes, and email-based technical support. The Maintenance is required to keep the Agent on the license.
“Solutions” are the products required to start different kinds of builds / processes. Each Agent that start builds/processes, needs its own “solution” / “solutions” required for this processes.
What’s the difference between purchasing more items for an existing license, and ordering a new license?
Purchasing items for an existing license means you’re getting an addition and/or upgrade for the workgroup of machines already running Incredibuild with this license, on the same network. Ordering a new license means creating a new group which will work separately than any existing workgroups/licenses, usually on a different network.
What does each machine need to run IncrediBuild properly?
Each machine running IncrediBuild needs:
a. Its own Agent with the relevant number of Cores. The options are: up to 4 / 8 / 16 / 24 / 32 / 48 / 64 cores. Please note this refers to logical cores, e.g. a machine with 4 physical cores and hyper-threading will need the “Agent with up to 8 cores” to utilize all its processing power for IncrediBuild’s acceleration effect.
b. The Agent needs to be under a license with a valid Maintenance.
c. If the machine needs to start processes in addition to accelerating them – it will require, in addition to the Agent, also the relevant “Solution” / “Solutions” for all the processes it starts.
What do I need to purchase to get IncrediBuild to work with new Visual Studio versions?
New Visual Studio versions are followed by new IncrediBuild software versions that support them. As long as your license has valid Maintenance and C/C++ solutions, you can upgrade to the latest IncrediBuild version which supports the new Visual Studio version, and use it.
My license is under Maintenance with valid Incredibuild C/C++ solutions. Can I use different Visual Studio versions with the same IncrediBuild version?
Yes. You can use different Visual Studio versions on different Agents. As long as the IncrediBuild version you are running is an IncrediBuild version which supports all these different Visual Studio versions – the different Agents could work together.
After purchasing a license, can I move an Agent from one machine to another?
Yes, if your license’s Maintenance option is still in effect. This will involve a simple process in which the old Agent must first be “unsubscribed” and the new one “subscribed”. Both operations are performed through the IncrediBuild Coordinator application.
I used the FreeDev license to evaluate IncrediBuild for 30 days, and I need a few more days to finalize the purchase procedure. Can I ask for an extension?
Yes, please contact us at [email protected]
Am I entitled to support and version updates when purchasing IncrediBuild?
Each initial IncrediBuild license purchase entitles you to 12 months of Maintenance, which includes free version updates and support.
How is the product delivered and what are the delivery terms?
Following a purchase, a new license file is delivered by email. No physical shipment is made. If payment is made immediately by credit card, the final “Standard’ license file, for use until the near renewals date, is sent right away. If payment is to be made by a bank transfer, an invoice as well as a temporary license file are provided within 3 business day of receiving the order. Then once payment arrives (IncrediBuild payment terms are NET 30), the final standard license file or use until the near renewals date is sent.
I am a licensed user and I want to split my existing license between several networks. For example, 2 groups of 5 Agents running on two networks instead of 10 users on one network. Is this possible?
If the license is active and with valid Maintenance, it is possible to split it. Your IncrediBuild account manager needs to do the split for you and send you the new license files after the split. If you wish to split your license, contact us at [email protected] .
I forgot to renew my existing license and it has now expired. I would now like to renew it in order to continue working with IncrediBuild. What are my options?
If you renew within 3 months after your license expires, you can order the renewals as usual. After more than 3 months, a renewal / renewals terms are not guaranteed. Please contact us at [email protected] for more details.
I have a sales-related question that I haven't found an answer to. How do I contact you?
Please contact us at [email protected]. We’ll do our best to provide a speedy response.