Custom Protobuf Build

Build and Install Protobuf

As Protobuf can be installed easily as binary package in different versions (see Installing the Binary Packages) via appropiate package managing systems, there is usually no need to build protobuf from source. However, if a custom build is necessary, this section gives instructions, how to compile version 3.17.3. and hook it into the openPASS build. This currently applies to the openPASS build, as static and shared libraries of Protobuf are required. Adjust this guide to your needs.

  1. Download release 3.17.3 from https://github.com/protocolbuffers/protobuf/releases

  2. Extract

    • for Windows to C:\OpenPASS\thirdParty\sources\protobuf-cpp-3.17.3

    • for Linux to ~/OpenPASS/thirdParty/sources/protobuf-cpp-3.17.3

  3. Navigate to the extracted folder

    Start MinGW 64-bit shell

    cd /C/OpenPASS/thirdParty/sources/protobuf-cpp-3.17.3
    
  4. Create build directory

    cd cmake
    mkdir build
    cd build
    
  5. Run CMake

    cmake -G "MSYS Makefiles" \
          -DCMAKE_BUILD_TYPE=Release \
          -DCMAKE_INSTALL_PREFIX=C:/OpenPASS/thirdParty/protobuf \
          -Dprotobuf_BUILD_SHARED_LIBS=OFF \
          -Dprotobuf_BUILD_TESTS=OFF \
          ..
    

    Note

    Tests are disabled due to compiler warnings treated as errors (may vary with compiler version).

  6. Compile

    make -j3
    
  7. Install

    make install
    

Note

After completion, repeat the steps described above with the following changes applied to the CMake call:

  1. Set protobuf_BUILD_SHARED_LIBS to ON

  2. Use ~/OpenPASS/thirdParty/protobuf-shared as CMAKE_INSTALL_PREFIX

This will build and install the dynamic libraries of Protobuf.

Hook Protobuf into OSI

If you want to build and install OSI with a custom build of Protobuf, most of the steps can be followed as described in instruction Build and Install OSI. However, one step must be added.

For all required steps before the following command, see Build and Install OSI.

  1. Additional CMake variables have to be set.

    cmake -G “MSYS Makefiles” \
          -DCMAKE_BUILD_TYPE=Release \
          -DCMAKE_INSTALL_PREFIX=C:/OpenPASS/thirdParty/osi \
          -DPROTOBUF_INCLUDE_DIR=C:/OpenPASS/thirdParty/protobuf-shared/include \
          -DPROTOBUF_PROTOC_EXECUTABLE=C:/OpenPASS/thirdParty/protobuf-shared/bin/protoc.exe \
          -DPROTOBUF_LIBRARY=C:/OpenPASS/thirdParty/protobuf-shared/lib/libprotobuf.dll.a  \
          ..
    

For all required steps after this stage, see Build and Install OSI.