Rebuild BCI2000
This tutorial is for developers who have downloaded the prerequisites and have the source code. If the follow the previous steps, you will have the full, default version of BCI2000 on your local computer. This maximizes the ease-of-use and flexibility for any custom uses.
However, if you want to include any changes in the BCI2000 infrastructure, you will need to rebuild the appropriate modules in BCI2000. This page will first detail how to choose what needs to be rebuilt, and then what steps are needed to rebuild BCI2000 with your changes.
What needs to be rebuilt?

BCI2000 always runs 4 modules (executables, .exe), as shown here. To run BCI2000, all 4 executables are run. Therefore, to update BCI2000, these executables need to be updated. In fact, only the executable that includes custom changes need to be updated. Therefore, in most cases (e.g., adding a custom filter, module, or extension), only one executable needs to be updated.
We will first go over the steps to completely rebuild BCI2000, then detail how this process can be streamlined for specific cases.
Full rebuild
Completing a full rebuild is helpful when there have been large changes in the codebase that affect the underlying architecture. However, doing a Specific rebuild will usually be sufficient.
- Run Configure.sh.cmd in the BCI2000
builddirectoryStep 1 - Run Configure.sh.cmd - Press
Generate(this automatically runsConfigurethenGenerate). This runs CMake to reconfigure the BCI2000 solution. Essentially, it draws all the paths between the files and makes everything ready to compile.Step 3 - CMake is reconfigured and generated - Press the
Open Projectbutton or openBCI2000.slnin thebuildfolder to open it in Visual Studio. - In Visual Studio, go to
Build → Build Solution, or right-click Solution 'BCI2000' in the Solution Explorer.
Step 4 - Build full solution
Final Result: Every executable in the prog folder has been updated!
Specific rebuild
Depending on what changes are made, we can limit the previous steps to the essentials.
- Editing a module: Simply find the existing module in the Solution Explorer in Visual Studio, right-click on it and press
Build. - Creating a module: Reconfigure CMake (Step 1 of previous list), then build the new module (Step 1 of this list)
- Editing an extension
- Determine what type of extension it is. The possible options are Source, Processing, or Application.
- Build the module of the appropriate type used in your batch file (Step 1 of this list)
- Example: I have modified the XsensMTwLogger. Since it is acquiring data, it is a Source Extension, also called a Logger. I am testing out my implementation, so I want to use SignalGenerator for dummy signals. I will build SignalGenerator (under
Core → SignalSource), and my modified extension will be included when I run myCursorTask_SignalGenerator.batbatch file. When I want to record data from an amplifier, I will need to build that Source Module to update it with my modified extension.
- Creating an extension
- Open CMake (
Configure.sh.cmd) and pressConfigure. - You will see a new option to enable your extension. Check the box to enable.
- Generate CMake (Step 2 of previous list), then build the appropriate module (Step 3 of this list)
- Open CMake (
Final Result: Only one executable in the prog folder has been updated!