Getting Started¶
Building the code¶
Requirements¶
To compile PISA, you will need a compiler supporting at least the C++17 standard. Our continuous integration pipeline compiles PISA and runs tests in the following configurations:
- Linux:
- GCC, versions: 9, 10, 11, 12
- Clang 11
- MaxOS:
- XCode 13.2
Supporting Windows is planned but is currently not being actively worked on, mostly due to a combination of man-hour shortage, prioritization, and no core contributors working on Windows at the moment. If you want to help us set up a Github workflow for Windows and work out some issues with compilation, let us know on our Slack channel.
Dependencies¶
Most build dependencies are managed automatically with CMake and git submodules. However, several dependencies still need to be manually provided:
CMake >= 3.0autoconf,automake,libtool, andm4(for buildinggumbo-parser)- OpenMP (optional)
Building¶
The following steps explain how to build PISA. First, you need the code checked out from Github. (Alternatively, you can download the tarball and unpack it on your local machine.)
$ git clone https://github.com/pisa-engine/pisa.git
$ cd pisa
Then create a build environment.
$ mkdir build
$ cd build
Finally, configure with CMake and compile:
$ cmake ..
$ make
Build Types¶
There are two build types available:
Release(default)DebugRelWithDebInfoMinSizeRel
Use Debug only for development, testing, and debugging. It is much slower at runtime.
Learn more from CMake documentation.
Build Systems¶
CMake supports configuring for different build systems. On Linux and Mac, the default is Makefiles, thus, the following two commands are equivalent:
$ cmake -G ..
$ cmake -G "Unix Makefiles" ..
Alternatively to Makefiles, you can configure the project to use Ninja instead:
$ cmake -G Ninja ..
$ ninja # instead of make
Other build systems should work in theory but are not tested.
Testing¶
You can run the unit and integration tests with:
$ ctest
The directory test/test_data contains a small document collection used in the
unit tests. The binary format of the collection is described in a following
section.
An example set of queries can also be found in test/test_data/queries.