Programming Reference:Build System (obsolete): Difference between revisions
No edit summary |
|||
| Line 1: | Line 1: | ||
== Introduction == | == Introduction == | ||
Early versions of BCI2000 (2.x and earlier) were dependent on the visual components library (VCL) by Borland and could only be built using the Borland compiler. Since version 3.0, Qt has replaced the VCL because it is not only compiler-independent, but also platform-independent. | |||
To support many platforms and compilers, BCI2000 is using CMake http://www.cmake.org to generate Makefiles, project files, and Visual Studio solutions. CMake can be thought of as a meta-makefile; it examines your build environment and sets up a Visual Studio project, a Code::Blocks project, or a Unix Makefile which is custom tailored to your environment. Due to the wide variation in possible build environments, BCI2000 can not come with a fixed Visual Studio solution file, or a fixed Eclipse project file (such fixed solutions would always end up costing users a lot of effort). Thus, the number of platforms BCI2000 supports is mainly limited by the number of platforms and compilers for which CMake has generators. | |||
<!-- | <!-- | ||
== Supported Environments == | == Supported Environments == | ||
*'''Supported Operating Systems''' | *'''Supported Operating Systems''' | ||
**Windows | **32 and 64-bit Windows systems | ||
** | **Windows 7, 8, 10 (Vista not recommended) | ||
**Support for Unix-like systems (macOS, Linux) is currently broken | |||
*'''Supported Compilers''' | *'''Supported Compilers''' | ||
**Visual Studio | **Visual Studio 2012, 2015, 2017 | ||
*'''Supported IDEs''' | *'''Supported IDEs''' | ||
**Qt Creator | **Qt Creator | ||
**Visual Studio | **Visual Studio 2012, 2015, 2017 | ||
== How To Build Using CMake == | == How To Build Using CMake == | ||
#Ensure that your compiler and IDE are installed on the computer. This means that Visual Studio is installed if you intend to use Visual Studio, or that MinGW and Code::Blocks are installed if you intend to use Code::Blocks as your IDE and MinGW as your compiler. | #Ensure that your compiler and IDE are installed on the computer. This means that Visual Studio is installed if you intend to use Visual Studio, or that MinGW and Code::Blocks are installed if you intend to use Code::Blocks as your IDE and MinGW as your compiler. | ||
#Download and install a recent version of cmake (Version 3.11.0 at the time of this writing) from http://www.cmake.org/ - '''Add to path for all users.''' | |||
#Download and install | |||
#Go to the BCI2000/build directory and double-click the "Make ... .bat" file which best describes your intended platform. (for example, if you plan to use Visual Studio 2008, you would run the "Make VS2008 Project Files.bat"). These batch files will ask you a few questions about which parts of the BCI2000 distribution you want to make, and will then call CMake with the appropriate options. | #Go to the BCI2000/build directory and double-click the "Make ... .bat" file which best describes your intended platform. (for example, if you plan to use Visual Studio 2008, you would run the "Make VS2008 Project Files.bat"). These batch files will ask you a few questions about which parts of the BCI2000 distribution you want to make, and will then call CMake with the appropriate options. | ||
#Wait while cmake examines your computer, finds Qt and your compiler, and generates applicable project files for your system | #Wait while cmake examines your computer, finds Qt and your compiler, and generates applicable project files for your system | ||
Revision as of 14:11, 24 April 2018
Introduction
Early versions of BCI2000 (2.x and earlier) were dependent on the visual components library (VCL) by Borland and could only be built using the Borland compiler. Since version 3.0, Qt has replaced the VCL because it is not only compiler-independent, but also platform-independent.
To support many platforms and compilers, BCI2000 is using CMake http://www.cmake.org to generate Makefiles, project files, and Visual Studio solutions. CMake can be thought of as a meta-makefile; it examines your build environment and sets up a Visual Studio project, a Code::Blocks project, or a Unix Makefile which is custom tailored to your environment. Due to the wide variation in possible build environments, BCI2000 can not come with a fixed Visual Studio solution file, or a fixed Eclipse project file (such fixed solutions would always end up costing users a lot of effort). Thus, the number of platforms BCI2000 supports is mainly limited by the number of platforms and compilers for which CMake has generators.
- MinGW, Borland and other single configuration generators within CMake only generate one configuration at CMake Run-time. By default, this is set to the release configuration. It can be set - along with specific compiler options - in BCI2000/build/cmake/BuildConfigurations.cmake. The Visual Studio generator will ignore settings in this file. To turn on a debug build in a single configuration generator, run cmake -i in the build directory and set CMAKE_BUILD_TYPE to "Debug" when prompted.
- All Compilers handle non standard characters, such as umlauts and characters with accents or tildes, differently. Because BCI2000 currently has no standardized way of handling non standard characters in a cross-compiler environment, it is strongly recommended that - for the time being - special characters are not used in localizations during the development of BCI2000 Ver 3.0.
Conclusions
Now that BCI2000 is open to a number of platforms, and compilers, support may not exist for every possible compiler/platform available. Certain compilers do not optimize code as well as others, and this behavior may lead to poor system latencies during BCI2000 experiments. The supported compilers have been rigorously tested and confirmed to be adequate for compiling the BCI2000 sources. If you wish to use a different compiler, be sure to run tools/BCI2000Certification in order to confirm your setup. CMake is a powerful tool, but in the end, ability to compile the sources is completely up to the IDE/compiler choice. If your IDE/compiler choice is not listed above, it is strongly urged that you to consider using one which is supported. If you run into problems using an unsupported IDE/compiler combination, you can try to find help at the BBS - http://www.bci2000.org/phpbb/index.php. BCI2000 should compile as effortlessly as possible on supported platforms.
Windows platforms tested successfully so far
| Compiler | OS | Processors | Qt linkage |
|---|---|---|---|
| MSVC2008 | Win XP SP3 | 2 | static |
| MSVC2008 | Win XP SP3 | 1 | static |
| MSVC2008 | Win 7 32bit | 1 | static |
| MSVC2008 | Win 7 64bit | 1 | static |
| MSVC2010 | Win XP SP3 | 1 | static |
| MSVC2010 | Win XP SP3 | 1 | dynamic |
| MinGW > 4 | Win XP SP3 | 1 | static |
| MinGW > 4 | Win XP SP3 | 1 | dynamic |
Status on other OSes
Note that the Qt libraries provided in the BCI2000 source tree are for Windows only, so you need to separately install Qt on your system before compiling BCI2000.
Linux
Executable tests are passed on x86 and amd64 architectures running Debian Squeeze (currently "Stable") and Wheezy (currently "Testing").
OS X
BCI2000 builds successfully in OS X Leopard and Snow Leopard using the CMake generating script at build/Make Unix Makefiles.sh. Executable tests run successfully on OSX, both in 32 and 64 bit mode.