/fesapi

A library allowing ENERGISTICS™ data standards support (mainly RESQML™), multi-languages (C++, Java, C#, Python)

Primary LanguageC++Apache License 2.0Apache-2.0

If you just want some precompiled binaries (just to test for example)

  • Please first check in the assets of the releases if your version has already been provided? For a Python version, just look at PyPI.
  • If not, create an issue and ask for the version you would want.

Prepare your build environment

  • Create a folder called fesapiEnv.
  • In this folder create the three following folders
    • build
    • fesapi (Git clone this repository into this folder "fesapi". You should then have a path fesapiEnv/fesapi/src)
    • dependencies
  • The following compilers are known to work
    • gcc from version 8
    • visual studio from version 2019
    • clang from version 5.0

Prepare the dependencies

Download (build and install if necessary) third party libraries:

We advise you to install these third party libraries respectively into

  • fesapiEnv/dependencies/hdf5-particularVersion
  • fesapiEnv/dependencies/minizip-particularVersion
  • fesapiEnv/dependencies/boost-particularVersion

Configure the build

FESAPI uses cmake as its build tool. A 3.12 version or later of cmake is required https://cmake.org/download/. We also recommend using cmake-gui (already included in the bin folder of the binary releases of cmake) which provides a graphical user interface on top of cmake. If you want to use cmake in command line, you would find example in GitHub Actions file. Follow the below instructions :

  • yourPath/fesapiEnv/fesapi defines where is the source code folder
  • yourPath/fesapiEnv/build/theNameYouWant defines where to build the binaries
  • Click on "Configure" button and select your favorite compiler : it will raise several errors.
  • give real values, path and files to the following cmake variables:
    • HDF5 (using cmake find module)
      • (ONLY IF NOT AUTOMATICALLY FOUND) HDF5_ROOT : The path to the folder containing include and lib folders of HDF5
      • ONLY IF YOU WANT TO STATICALLY LINK TO HDF5, set a cmake variable called HDF5_USE_STATIC_LIBRARIES to ON
      • ONLY IF YOU WANT TO LINK TO PARALLEL HDF5, set a cmake variable called HDF5_PREFER_PARALLEL to ON (and give a look to example/exampleMPI.cpp)
    • MINIZIP (using our own cmake find module)
      • (ONLY IF NOT AUTOMATICALLY FOUND) MINIZIP_ROOT : The path to the folder containing include and lib folders of MINIZIP
    • ZLIB (using cmake find module)
      • (ONLY IF NOT AUTOMATICALLY FOUND) ZLIB_ROOT : The path to the folder containing include and lib folders of ZLIB
      • ONLY IF YOU WANT TO STATICALLY LINK TO ZLIB, set a cmake variable called ZLIB_USE_STATIC_LIBS to ON
    • SZIP (it is only required when you statically link to HDF5 AND when HDF5 has been built using SZIP)
      • SZIP_LIBRARY_RELEASE : the SZIP library you want to link to. This warning can be ignored most of time but it can really create unpredictable bugs in some circumstances (static linking to HDF5 with HDF5 making use of szip).
    • Boost (using cmake find module)
      • Boost_INCLUDE_DIR : where the Boost headers are located (generally the boost install folder)
      • Be aware that a recent version of Boost needs a recent version of CMake
  • Click again on "Configure" button. You should no more have errors so you can now click on "Generate" button. alt text
  • You can now build your solution with your favorite compiler (and linker) using the generated solution in yourPath/fesapiEnv/build/theNameYouWant
  • OPTIONALLY, you can build the tutorial example by setting WITH_EXAMPLE cmake variable to ON
  • OPTIONALLY, you can also set the variables WITH_DOTNET_WRAPPING, WITH_JAVA_WRAPPING or WITH_PYTHON_WRAPPING to true if you want to also generate wrappers on top of FESAPI for these two other programming languages. Don't forget to click again on "Configure" button once you changed the value of these two variables.
    • You will then have to also provide the path to the SWIG (version 3 as a mininum version) executable in the SWIG_EXECUTABLE variable (and click again on "Configure" button)
    • FOR Java and only for JAVA, you'll also have to provide various path to some java executables.
    • For Python, be sure to install FESAPI and not only build it since the wheel generation is operated during the install step, not during the build step.
    • you will find the wrappers in fesapi/java/src or fesapi/cs/src (fesapi/cs also contains a VS2015 project for the wrappers) or fesapi/python/fesapi

Remark : you can choose where FESAPI will be installed (using "make install" on Linux or by generating the "INSTALL" project on Visual Studio) by setting the cmake variable called CMAKE_INSTALL_PREFIX

How to start

As a first way to start, we advise people to look at examples provided with FESAPI. Please give a look at:

You can also find Doxygen generated documentation here

Testing

This software was tested with :

Credits

This software was developed with :

FESAPI Product incorporates RESQML™, WITSML™ and PRODML™ technology/standards provided by the Energistics Consortium, Inc.

RESQML, WITSML and PRODML are trademarks or registered trademarks of Energistics Consortium, Inc.