Building ParaView

This page describes how to build and install ParaView. It covers building for development, on both Linux and Windows. Please Note that Linux (x86_64), Windows (x86_64) and macOS (x86_64 and arm64) version are built and tested by our continuous integration system and are considered supported environments.

Any other environnements and architecture (including Cygwin, MingGW, PowerPC) are considered non-officially supported, however, patches to fix problems with these platforms will be considered for inclusion.

ParaView depends on several open source tools and libraries such as Python, Qt, CGNS, HDF5, etc. Some of these are included in the ParaView source itself (e.g., HDF5), while others are expected to be present on the machine on which ParaView is being built (e.g., Python, Qt).

The first section is a getting started guide by OS that is very helpful if you have never built ParaView before and do not know which options you need. If you are looking for the generic help, please read the Complete Compilation Guide

Getting Started Guide

This is a section intended to help those that have never built ParaView before, are not experienced with compilation in general or have no idea which option they may need when building ParaView. If you follow this guide, you will be able to compile and run a standard version of ParaView for your operating system. It will be built with the Python wrapping, MPI capabilities and multithreading capabilities.

Linux

Dependencies

Please run the command in a terminal to install the following dependencies depending of your linux distribution.

Ubuntu 22.04 LTS / Debian 12

sudo apt-get install git cmake build-essential libgl1-mesa-dev libxt-dev libqt5x11extras5-dev libqt5help5 qttools5-dev qtxmlpatterns5-dev-tools libqt5svg5-dev python3-dev python3-numpy libopenmpi-dev libtbb-dev ninja-build qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools

Ubuntu 18.04 LTS / Debian 10

sudo apt-get install git cmake build-essential libgl1-mesa-dev libxt-dev qt5-default libqt5x11extras5-dev libqt5help5 qttools5-dev qtxmlpatterns5-dev-tools libqt5svg5-dev python3-dev python3-numpy libopenmpi-dev libtbb-dev ninja-build

Centos 7
CMake

Download and install cmake) as the packaged version is not enough considering that CMake 3.12 or higher is needed.

Others

sudo yum install python3-devel openmpi-devel mesa-libGL-devel libX11-devel libXt-devel qt5-qtbase-devel qt5-qtx11extras-devel qt5-qttools-devel qt5-qtxmlpatterns-devel tbb-devel ninja-build git

###### Environment

alias ninja=ninja-build
export PATH=$PATH:/usr/lib64/openmpi/bin/
ArchLinux

sudo pacman -S base-devel ninja openmpi tbb qt python python-numpy cmake

Other distribution

If you are using another distribution, please try to adapt the package list. Feel free to then provide it so we can integrate it in this guide by creating an issue.

Build

To build ParaView development version (usually refered as "master"), please run the following commands in a terminal:

git clone --recursive https://gitlab.kitware.com/paraview/paraview.git
mkdir paraview_build
cd paraview_build
cmake -GNinja -DPARAVIEW_USE_PYTHON=ON -DPARAVIEW_USE_MPI=ON -DVTK_SMP_IMPLEMENTATION_TYPE=TBB -DCMAKE_BUILD_TYPE=Release ../paraview
ninja

To build a specific ParaView version, eg: v5.9.1, please run the following commands in a terminal while replacing "tag" by the version you want to build

git clone https://gitlab.kitware.com/paraview/paraview.git
mkdir paraview_build
cd paraview
git checkout tag
git submodule update --init --recursive
cd ../paraview_build
cmake -GNinja -DPARAVIEW_USE_PYTHON=ON -DPARAVIEW_USE_MPI=ON -DVTK_SMP_IMPLEMENTATION_TYPE=TBB -DCMAKE_BUILD_TYPE=Release ../paraview
ninja

Run

Double click on the paraview executable in the /bin directory or run in the previous terminal

./bin/paraview

macOS

These instructions have worked on a mid 2023 MacMini with an M2 chipset on macOS Ventura.

Install Homebrew

Please run the command in a terminal to install the following dependencies on your Mac via Homebrew and add the relevant environment variables for brew.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
Install dependencies (largely following the Ubuntu steps for Linux)

brew install open-mpi cmake mesa tbb ninja gdal qt5

##### Set build environment

echo 'export PATH="/opt/homebrew/opt/qt@5/bin:$PATH"' >> ~/.zshrc
echo 'export LDFLAGS="-L/opt/homebrew/opt/qt@5/lib"' >> ~/.zshrc
echo 'export CPPFLAGS="-I/opt/homebrew/opt/qt@5/include"' >> ~/.zshrc
source ~/.zshrc

Build

To build a specific ParaView version, eg: v5.11.1, please run the following commands in a terminal

git clone https://gitlab.kitware.com/paraview/paraview.git
mkdir paraview_build
cd paraview
git checkout v5.11.1
git submodule update --init --recursive
cd ../paraview_build
cmake -GNinja -DPARAVIEW_USE_PYTHON=ON -DPARAVIEW_USE_MPI=ON -DVTK_SMP_IMPLEMENTATION_TYPE=TBB -DCMAKE_BUILD_TYPE=Release -DPARAVIEW_ENABLE_GDAL=ON ../paraview
ninja

Run

Double click on the paraview executable in the /bin directory or run in the previous terminal

./bin/paraview.app/Contents/MacOS/paraview

Windows

Note: The following steps concerning Visual Studio 2019 can also be applied to newer versions. If so, be sure to use the respective Qt Version (e.g. for VS 2022, use msvc2022_64) and the Native Tools Command Prompt.

Dependencies

Recover the source

cd C:
mkdir pv
cd pv
git clone --recursive https://gitlab.kitware.com/paraview/paraview.git
mv paraview pv
mkdir pvb
cd C:
mkdir pv
cd pv
git clone https://gitlab.kitware.com/paraview/paraview.git
mv paraview pv
mkdir pvb
cd pv
git checkout tag
git submodule update --init --recursive

Build

Note: If you want to build ParaView with CMAKE_BUILD_TYPE=Debug you also need to add the option -DPARAVIEW_WINDOWS_PYTHON_DEBUGGABLE=ON.

Run

Complete Compilation Guide

Obtaining the source

To obtain ParaView's sources locally, clone this repository using Git.

git clone --recursive https://gitlab.kitware.com/paraview/paraview.git

Building

ParaView supports all of the common generators supported by CMake. The Ninja, Makefiles, and Visual Studio generators are the most well-tested however.

Prerequisites

ParaView only requires a few packages to build with its basic capabilities. However, specific features may require additional packages to be provided to ParaView's build configuration.

Required:

Optional dependencies:

Installing CMake

CMake is a tool that makes cross-platform building simple. On several systems it will probably be already installed or available through system package management utilities. If it is not, there are precompiled binaries available on CMake's download page.

Installing Qt

ParaView uses Qt to provide its graphical user interface. Precompiled binaries are available on Qt's website.

Note that on Windows, the compiler used for building ParaView must match the compiler version used to build Qt.

The Linux packages for Qt 5.9 use a version of protobuf that may conflict with that used by ParaView. If, when running ParaView, error messages about a mismatch in protobuf versions appears, moving the libqgtk3.so plugin out of the plugins/platformthemes directory has been sufficient in the past.

Optional Additions

Download And Install ffmpeg (.avi) movie libraries

When the ability to write .avi files is desired, and writing these files is not supported by the OS, ParaView can use the ffmpeg library. This is generally true for Linux. Source code for ffmpeg can be obtained from its website.

MPI

To run ParaView in parallel, an MPI implementation is required. If an MPI implementation that exploits special interconnect hardware is provided on your system, we suggest using it for optimal performance. Otherwise, on Linux/Mac, we suggest either OpenMPI or MPICH. On Windows, Microsoft MPI is required.

Python

In order to use Python scripting, Python is required (version 3.3 or later). Python is also required in order to build ParaViewWeb support.

OSMesa

Off-screen Mesa can be used as a software-renderer for running ParaView on a server without hardware OpenGL acceleration. This is usually available in system packages on Linux. For example, the libosmesa6-dev package on Debian and Ubuntu. However, for older machines, building a newer version of Mesa is likely necessary for bug fixes and support for features needed by ParaView. Its source and build instructions can be found on its website.

Creating the Build Environment

Linux (Ubuntu/Debian)

Note: If you are using an Ubuntu-provided compiler, there is a known issue with the optional Python linking. This case is hard to auto-detect, so if undefined symbol errors related to Python symbols arise, setting vtk_undefined_symbols_allowed=OFF may resolve the errors. If it does not, please file a new issue.

Windows

Building

In order to build, CMake requires two steps, configure and build. ParaView itself does not support what are known as in-source builds, so the first step is to create a build directory.

!!! note On Windows, there have historically been issues if the path to the build directory is too long. These issues should have been addressed in more recent versions of ParaView's build system, but they may appear again. If you see errors related to header files not being found at paths on your file system that do exist, please report them to the issue tracker.

mkdir -p paraview/build
cd paraview/build
ccmake ../path/to/paraview/source # -GNinja may be added to use the Ninja generator

CMake's GUI has input entries for the build directory and the generator already. Note that on Windows, the GUI must be launched from a "Native Tools Command Prompt" available with Visual Studio in the start menu.

Build Settings

ParaView has a number of settings available for its build. These are categorized as build options, capability options, feature options and miscellaneous options.

Build Options

Options that impact the build begin with the prefix PARAVIEW_BUILD_. Common variables to modify include:

Less common, but variables which may be of interest to some:

More advanced build options are:

Capability settings

These settings control capabitities of the build. These begin with the prefix PARAVIEW_USE_. The common variables to modify include:

Less common, but potentially useful variables are:

Feature settings

These settings control optional features. These begin with the prefix PARAVIEW_ENABLE_. The common variables to modify include:

These settings are used for translating purpose:

More advanced / less common options include:

Plugin settings

ParaView includes several optional plugins that can be enabled and disabled using the following options:

Miscellaneous settings

ParaView uses VTK's module system to control its build. This infrastructure provides a number of variables to control modules which are not otherwise controlled by the other options provided.

For variables that use the module system's build settings, the valid values are as follows:

If any YES module requires a NO module, an error is raised.

More advanced options:

Building editions

A typical ParaView build includes several modules and dependencies. While these are necessary for a fully functional application, there are cases (e.g. in situ use-cases) where a build with limited set of features is adequate. ParaView build supports this using the PARAVIEW_BUILD_EDITION setting. Supported values for this setting are:

Debugging facilities

ParaView's build is fairly complicated, so a few debugging facilities are provided.

General CMake

CMake provides the --trace-expand flag which causes CMake to log all commands that it executes with variables expanded. This can help to trace logic and data through the configure step.

Debugging Find modules can be done using the --debug-find flag (introduced in CMake 3.17) to determine what CMake's find_ commands are doing.

VTK Modules

VTK's module system debugging facilities may be controlled by using the following flags:

ParaView Plugins

ParaView's plugin system has a similar setup:

Building documentation

The following targets are used to build documentation for ParaView:

Using spack

Spack is a package manager for supercomputers, Linux and macOS. ParaView is one of the packages available in Spack. To install ParaView from spack, you can use:

spack install paraview

Please refer to Spack documentation for ways of customizing the install, including choosing the version and/or variant to build. Based on the version chosen, spack will download appropriate ParaView source and build it.

To make it easier to build ParaView using spack from an existing source checkout, we have included relevant spack package.yaml files within the ParaView codebase itself. This also makes it easier to keep the spack package up-to-date with any changes to the ParaView buildsystem. With every release (and as frequently as required), we will push the changes to the ParaView paraview.yaml file upstream to the official spack repository.

To build your existing source checkout of ParaView using Spack, here are the steps:

# assuming you've installed spack as documented in spack docs
# and activate the spack environment appropriately
# add custom paraview/package.yaml
> spack repo add $PARAVIEW_SOURCE_DIR/Utilities/spack/repo
# use info to confirm that the paraview package is available
# only one version should be available
> spack info paraview
# install similar to any other spack package
# e.g. following command installs osmesa-capable ParaView
# with mpich
> spack install paraview+osmesa^mesa~glx^mpich