Install from Source
Fides uses CMake version 3.9 or above, for building, testing, and installing the library and utilities.
Dependencies
Building, Testing, and Installing Fides
To build Fides, clone the repository and invoke the canonical CMake build sequence:
$ git clone https://gitlab.kitware.com/vtk/fides.git
If you want to run tests or use the test data, you’ll need to download the data using Git LFS.
$ cd fides
$ git lfs install
$ git lfs pull
$ cd ..
Now continue with the build process:
$ mkdir fides-build && cd fides-build
$ cmake ../fides
-- The C compiler identification is GNU 7.3.0
-- The CXX compiler identification is GNU 7.3.0
...
Then compile using
$ make
If you downloaded the test data, you can now optionally run the tests:
$ ctest
Test project /Users/caitlinross/dev/fides-build
Start 1: test-basic
1/17 Test #1: test-basic ........................ Passed 0.20 sec
Start 2: test-explicit
2/17 Test #2: test-explicit ..................... Passed 0.18 sec
...
Start 17: validate-inline
17/17 Test #17: validate-inline ................... Passed 0.03 sec
And finally, use the standard invocation to install:
$ make install
CMake Options
The following options can be specified with CMake’s -DVAR=VALUE syntax. The default option is highlighted.
VAR |
VALUE |
Description |
|---|---|---|
|
ON/OFF |
Build examples |
|
ON/OFF |
Build tests |
|
ON/OFF |
Build shared libraries. |
|
/path/to/install ( |
Installation location. |
|
Debug/Release/RelWithDebInfo/MinSizeRel |
Compiler optimization levels. |
Building your application
Building your application against Fides is easy, simply add the Fides library target into your target’s link libraries:
target_link_libraries(my-custom-app PUBLIC <other-needed-libs> fides)
If your application itself also depends on MPI, you may encounter link errors related to legacy MPI C++ bindings, e.g.:
undefined reference to `ompi_mpi_cxx_op_intercept'
undefined reference to `MPI::Comm::Comm()'
undefined reference to `MPI::Win::Free()'
If this happens, you have two options:
Be sure to include Fides headers before you include
<mpi.h>Tell cmake to skip those bindings for your target like this:
target_compile_definitions(my-custom-app PRIVATE OMPI_SKIP_MPICXX=1 MPICH_SKIP_MPICXX=1 MPI_NO_CPPBIND=1 _MPICC_H=1 )