Frequently Asked Questions - Technical

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 This email address is being protected from spambots. You need JavaScript enabled to view it. and we will try to respond as promptly as possible.

You may also visit our Knowledge Base page for a variety of articles.

With questions related to Pricing & Licensing , please refer to our Sales FAQ page

Index

Important Note: If you don't find an answer to your question in this section, search the IncrediBuild Knowledgebase for a possible answer.

Q&A

Technical Information

Q: What do I have to do in order to install IncrediBuild for evaluation in a networked environment?

A: Installing an IncrediBuild environment will typically take less than 15 minutes of your time. After downloading and running the Setup program, you will be required to install the Coordinator component on one computer (a desktop PC will do). After this simple wizard-based process, use the setup program to install the Agent component on some PCs connected to the local network (an Agent machine's setup typically lasts less than a minute, and doesn't even require a reboot). That's it! IncrediBuild is ready to build.

Q: 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?

A: MSVC's standard Build operations (from the Visual Studio IDE and from the command line) can be used at all times regardless of IncrediBuild's presence. What this means is that you will always have the option to go back to building as usual. If build scripts are used, they will have to undergo a minor change (replacing VC's command-line build tool with IncrediBuild's).

Q: Am I required to make changes in my C++ project for IncrediBuild to work?

A: No. IncrediBuild will build any C/C++ project that can be built using Visual Studio. In some cases it will be necessary to add project dependency information to allow multiple projects to be built in the correct order.

Q: How will the Microsoft Visual Studio environment change after installing IncrediBuild?

A: 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 VC's. 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 progress bar, a visual display of the progress, timings and so on.

Q: Can IncrediBuild be used from the command-line or from build scripts?

A: Yes. IncrediBuild includes a strong command-line interface for building projects, which can easily be integrated in any script that runs msdev.exe/devenv.exe to build projects. In fact, BuildConsole.exe supports the devenv/msdev command line syntax so you would typically only need to replace the executable name in your script!

Q: Which portions of my build will IncrediBuild distribute when building Visual Studio projects?

A: IncrediBuild will distribute C/C++ compilation and MIDL steps. In addition, any custom build steps, build events (pre-build, pre-link, post-build) and files running custom rules may be distributed using the XGE Interfaces solution.

Q: How can I know how effective IncrediBuild will be when used to compile my C++ project?

A: 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).

Q: What types of file formats can IncrediBuild accept as input?

A: IncrediBuild is compatible with Microsoft Visual C++ 6.0 project DSP/DSW files, Microsoft Visual C++ 2010, 2012,2013, VCPROJX & .SLN Files, MSVC 2008/2005/.NET .VCPROJ & .SLN files, Intel C++ Compiler .icproj files, and embedded VC 4.0 .vcw/.vcp files.

Q: Can IncrediBuild alter the compilation or link process, potentially creating problems in the build output?

A: 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.

Q: Can IncrediBuild slow down other user's machines in my organization as a result of the distributed compilation process?

A: 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 less 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.

Q: What are the software/hardware prerequisites for installing IncrediBuild?

A: IncrediBuild runs on Windows XP, 2003, Vista and Windows 7 versions, on any TCP/IP based network. Microsoft Visual C++ 2013, 2012, 2010, 2008, 2005, .NET & 6.0 (Visual Studio Express Edition is not supported) 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 a Pentium machine with a 450Mhz CPU, 128MB RAM and 10/100 Mbps network connection.

Q: Won't IncrediBuild use up all of my LAN bandwidth?

A: 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 at a minimum. In standard networks IncrediBuild's presence is hardly felt at all, even when several compilations are taking place.

Q: My workstations do not share the same configuration. They have different operating systems, versions of MSVC, service packs, dll versions etc. Will this pose any problems?

A: 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!

Q: 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?

A: 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.

Q: How can I adjust my scripts to identify if a build was run with IncrediBuild?

A: 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.

Q: 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?

A: 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.

Q: I'm using precompiled headers in my project. Does IncrediBuild support this? Is there anything I should be aware of regarding precompiled headers?

A: 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.

Q: I'm using Visual Studio's browse information functionality. Will this still be available to me if I use IncrediBuild?

A: Yes, IncrediBuild supports the creation of browse information files.

Q: Some of my projects contain custom, pre-build, pre-link and post-build steps. Will IncrediBuild cope with that?

A: Yes. Custom build steps and build events are executed locally on the building machine (if that machine has more than one CPU, several steps can run in parallel on each CPU).

Q: My project uses COM objects, and requires DLL's and type libraries to compile some of my files. How does IncrediBuild handle this?

A: 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.

Q: Some of my source files are located on network drives. How will this affect IncrediBuild's behavior and performance?

A: 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 VC's when compiling projects that include files located on the network.

Q: How does IncrediBuild determine which machines will participate in a build?

A: 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 compilation. 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.

Q: What happens if several Agents start a build simultaneously?

A: 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.

Q: What happens if the Coordinator becomes unavailable for some reason during a build?

A: 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.

Q: What happens if an Agent that is compiling for a remote machine suddenly becomes unavailable during a build?

A: 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.

Q: I'm using a compiler/linker different from MSVC's for better code optimization. I still develop and build my project using Visual Studio. Will IncrediBuild support the compiler I'm using?

A: IncrediBuild currently supports Microsoft's cl.exe (all Visual Studio, eVC, Xbox and Xbox 360 platforms) and Intel C++ Compiler. Additional compilers may be supported in the future. The XGE Interfaces solution can be used with a variety of build tools and scripts to run compilers that are not currently supported.

Q: What programming languages does IncrediBuild support?

A: IncrediBuild's Visual Studio integration supports C and C++ projects stored in Microsoft Visual C++ format.

Q: Does IncrediBuild support multi-processor machines?

A: Yes. IncrediBuild can exploit additional processors to improve compilation time. This feature is available at an additional cost.

Q: Does IncrediBuild support Microsoft Visual C++ .NET?

A: Yes. IncrediBuild fully supports MSVC .NET 2002 and 2003 (all project types).

Q: Does IncrediBuild support Microsoft Visual C++ 2005?

A: IncrediBuild fully supports Visual Studio 2005.

Q: Does IncrediBuild support Microsoft Visual C++ 2008?

A: IncrediBuild fully supports Visual Studio 2008.

Q: Does IncrediBuild support Microsoft Visual C++ 2010?

A: IncrediBuild fully supports Visual Studio 2010.

Q: Does IncrediBuild support Xbox projects?

A: Yes. IncrediBuild fully supports distributed builds of Xbox projects in the MSVC .NET platform.

Q: Does IncrediBuild support Xbox 360 projects?

A: Yes. IncrediBuild fully supports distributed builds of Xbox 360 projects.

Q: Can I use IncrediBuild on a standalone machine?

A: Yes - with multiple-CPU machines, you can use IncrediBuild to exploit both the machines' processors and substantially improve compilation speed.

Q: Am I required to manually copy files between machines, register DLLs or perform any preliminary action after installing IncrediBuild in order for my project to compile?

A: 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.

Q: How many Agents can there be in an IncrediBuild environment?

A: One IncrediBuild Coordinator will effectively serve 500+ Agents. In cases where more Agents are required, we recommend splitting the environment into workgroups, each with its own Coordinator.

Q: Is it OK to install an Agent in the same machine as the Coordinator?

A: 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, though.

(Back to top)

Q: Can I build C# projects with IncrediBuild?

A: 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 solutions with multiple C# projects and mixed C++/C# solutions.

(Back to top)

Q: Can I build VB projects with IncrediBuild?

A: 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.

(Back to top)

Q: Can I build makefile-based projects with IncrediBuild?
A: Using IncrediBuild for Make & Build Tools introduced as of IncrediBuild V3.0, IncrediBuild can distribute builds run by a variety of make and build tools.

(Back to top)


Troubleshooting

Q: I've noticed some files with the "vcx0_ib_" prefix (x can be "6", "7" or "8") appear in the intermediate directory of my project during the IncrediBuild operation. Why does this occur?

A: This is normal. IncrediBuild generates separate debug information and .idb files for each of the Agents participating in the build, and these are stored in the intermediate folder.

Q: I'm comparing OBJ/EXE files that MSVC created to those of IncrediBuild - and they're not the same. Why?

A: There are some differences between IncrediBuild's output and MSVC'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.

Q: How can a user disable an Agent temporarily to make sure IncrediBuild will not use the machine's CPU?

A: By right-clicking on the IncrediBuild tray-icon and choosing "Disable Agent". This can also be done remotely from the Coordinator application.

Q: I've changed some of the directories in the "Directories" tab under the tools->Options menu in MSVC 6.0, and my change doesn't seem to have effect on IncrediBuild. Is this OK?

A: 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. MSVC 6.0 stores any new or modified directory information when it is closed, so in order for IncrediBuild to be aware of the new system directories MSVC must be closed once after modifying the information.

Q: 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?

A: The PATH environment variable is not set to the IncrediBuild installation folder. Note that you can only use BuildConsole in computers that have Microsoft Visual Studio installed.

Q: It looks like some debug information is missing. Can this be related to IncrediBuild (MSVC 6.0-specific)?

A: This may be related to use 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.

Q: When building projects, only my machine's Agent participates in the build!

A: 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.
4. The Coordinator name or port set in the Agent Settings dialog in your machine is incorrect.
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.
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. Your trial period of IncrediBuild has expired.

Q: I can't see the IncrediBuild tray-icon display. How do I restore it?

A: 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 to always be displayed, verify that the "Enable tray-icon display on system start-up" option is selected in the Agent Settings dialog "Tray-Icon" page.

Q: I can't see the IncrediBuild menu/toolbar in Microsoft Studio! Where's it gone?

A: Use the "Visual Studio Add-in" section in the Agent Settings dialog to restore the menu and toolbar using either the "Add-in Installation removal' section or, for MSVC 6.0, the "Fix menu" and "Fix Toolbar" buttons. Note that the MSVC 6.0 add-in requires the add-in to be installed separately for each user using the machine. This can be done using this dialog. If only the toolbar is missing, the explanation could be that it is simply hidden. To check if this is the case, right-click on the toolbar section in Microsoft Studio and verify that all listed toolbars beginning with the word "Toolbar" are checked.

Q: Browse information is not generated when building a project with IncrediBuild, although it is generated when building with MSVC. Why?

A: IncrediBuild keeps a global setting to determine whether to generate browse information or not. This can be set from the "Build System" tab in the Agent Settings dialog. You may also override this setting for a particular project when building a project from the batch build dialog.

Q: 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 documentation for more details.". What's wrong?

A: 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:

  • 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.
  • 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."

    Q: When compiling, I get a "No such file or directory" error on a header file/type library file.
    A: Check if this file is generated by a custom build step or a MIDL step in another project in the workspace. If so, this may be caused by a missing inter-project dependency definition in the workspace. See the documentation section on "Dependency Issues" (under "Advanced Topics") for more information.

    Q: When compiling, it seems that the compiler is using a different/out-of-date version of a header file/type library file.
    A: see answer in previous question.

    Q: Looking at the Output view in the Build Monitor, it looks like the display is missing output for many files that have already been compiled. What's wrong?
    A: During compilation, IncrediBuild buffers the build output for some of the configurations to make sure that different configurations' output doesn't mix up. To view all output messages for each configuration, use the Projects view. The output display will gradually contain the entire build output.

    Q: When running an incremental build with MSVC 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?
    A: There is a conflict between IncrediBuild's browse information creation options and the way MSVC 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 MSVC's project settings dialog).
        2. Set IncrediBuild's browse information creation settings (in the Agent Settings dialog) 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).
        3. Rebuild the project.

    Q: The IncrediBuild Agent fails to start on my machine. What's wrong?
    A: 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. Try replacing the following files, which should appear in your Windows/System32 folder, by copying them from another machine, with the same operating system, that has a working Agent installed:    

  • perfc009.dat    
  • perfd009.dat
      If not, run the Windows setup installation to restore these system files.

    Q: 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?
    A: This could be happening because of a network configuration error. For IncrediBuild to operate properly, all of the following tests should work:

    1. Ping the problem Agent from the building machine, using its IP address.
    2. Ping the problem Agent from the building machine, using its network name.
    3. Ping the building machine from the problem Agent, using its IP address.

    Q: 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?
    A: 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 application.
    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 an Agent.
    4. If the 'Packages' column specifies 'Build Helper' or a different MSVC version from the one you are using to build your project, right-click the Agent and use the 'Allocate Package' option to allocate the appropriate build system solution to your Agent.

    Q: I've installed a permanent/temporary IncrediBuild license supporting multiple CPUs/cores, but only one processor is used in builds. What should I do?
    A: Your Agent is probably missing the "Multiple CPU(s)/Core(s)" solution. 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->Multiple CPU(s)/Core(s)'. If this option is grayed out, your license has already allocated all of available packages and you must first deallocate this package from one of the other Agents.

    Q: 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?
    A: 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.

    Q: Why does the Coordinator show an Agent as 90%-100% CPU available while it's actually isn't?
    A: If the screen saver 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.

    Q: I can't get Edit & Continue to work. What's wrong?
    A: IncrediBuild supports Edit & Continue, but requires files to be used with this feature to be specified in advance using the solution Settings dialog. For more information, see this page in the user manual.

    Q: When building, I see two compilation bars showing the same file being compiled on two different machines. Is this normal?
    A: 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.