This repository is a collection header files and source code of the external libraries on which the BESIII Offline Software System has been built. These header files can be used to activate autocomplete (intellisense), particular when working with Visual Studio Code. Another motivation to collect these files is (an attempt) to allow the user to build BOSS on one's own system.
Header files can be updated by running
bash FetchExtLibs.sh
on IHEP's
lxslc
server, but this should in principle only overwrite the files that already come
with this repository.
The external libraries have been collected for BOSS version 7.0.4. and are (see here, p. 26):
- ROOT v5.34
- CLHEP v2.0.4.5
- Gaudi v23r9
- Geant4 v9.3
- MySQL v5.5.14
- CMT v1r25 (see also its Wiki)
- Additional:
- Reflex
- Schema
- Saxana
- (
gcc
version: 4.6.3)
Header files for BOSS 7.0.4 have also been added.
If you are editing code for BOSS package using Visual Studio Code, you can make
use of intellisense
to have autocomplete available for all functions and class methods of these
libraries, including BOSS. All you need to do is create a file called
.vscode/c_cpp_properties.json
in the folder in which you are working,
containing the following lines:
{
"configurations": [
{
"name": "Linux64/Win64",
"intelliSenseMode": "clang-x64",
"includePath": [
"${workspaceFolder}/ThirdParty/headers/Additional",
"${workspaceFolder}/ThirdParty/headers/BOSS",
"${workspaceFolder}/ThirdParty/headers/CLHEP",
"${workspaceFolder}/ThirdParty/headers/Gaudi",
"${workspaceFolder}/ThirdParty/headers/geant4",
"${workspaceFolder}/ThirdParty/headers/geant4/**",
"${workspaceFolder}/ThirdParty/headers/mysql",
"${workspaceFolder}/ThirdParty/headers/root"
],
"cStandard": "c11",
"cppStandard": "c++11",
"browse": {
"path": [
"${workspaceFolder}/ThirdParty/headers/Additional",
"${workspaceFolder}/ThirdParty/headers/BOSS",
"${workspaceFolder}/ThirdParty/headers/CLHEP",
"${workspaceFolder}/ThirdParty/headers/Gaudi",
"${workspaceFolder}/ThirdParty/headers/geant4",
"${workspaceFolder}/ThirdParty/headers/geant4/**",
"${workspaceFolder}/ThirdParty/headers/mysql",
"${workspaceFolder}/ThirdParty/headers/root"
],
"limitSymbolsToIncludedHeaders": true
}
}
],
"version": 4
}
The fastest way to do this, is to press Ctrl+Shift+P (Show All Commands)
and enter the command "C/C++: Edit configurations (JSON)". This will create or
open the .vscode/c_cpp_properties.json
file.
Note that you may have to edit the paths from the workspace. In this example,
this repository has been added as a submodule of the
BOSS Starter Kit, where the BOSS
External Libraries has been stored as submodule ThirdParty/headers
.
Formally, you should use c99
and c++03
, because of the version of gcc
on
the lxslc
server. Using
this trick,
though, you can activate many C++11 features within the BOSS package framework,
including the use of auto
.
Note that you may have to install the boost
libraries. In Linux, this can be
done through:
sudo apt-get install libboost-all-dev
By default, the headers are then installed under /usr/include/boost
.
Some components that allow one to build BOSS locally on one's system are still missing:
- Configuration Management Tool (
cmt
) - Concurrent Versions System (
CVS
), though this one becomes redundant when using Git