Ponca  576dd57931a6c531adad849a291f29a0ff031401
Point Cloud Analysis library
No Matches
Getting started


The only external library that is absolutely necessary to make Ponca work is Eigen, the swiss army knife of linear algebra. Some examples will require additional libraries in an effort to keep them lean and legible. We'll try to keep these dependencies to the minimum necessary, promised.

The modules are also compatible with CUDA, so that you may run Ponca on the GPU, provided you own an NVidia graphics card. This is an efficient way to make Ponca available through CUDA-compatible languages such as Matlab or Python. Eigen can be compiled by nvcc (NVIDIA CUDA Compiler Driver), see Eigen documentation for more details.


The Ponca library is currently under active development and some functionalities have already been implemented and thoroughly tested. If you want to get a taste of these prime features, use the latest package available here: https://github.com/poncateam/ponca/releases/latest/.

You may also want to monitor our efforts in developing the library, in which case you will want to access the development repository and use the master branch:

git clone https://github.com/poncateam/ponca.git


Ponca is an header-only library. It could not be easier to install: the only thing you have to do is to include the main header in your code.

#include <Ponca/Ponca>

To speed-up compilation, you may only use the header corresponding to the module you are interested in. For example:

#include <Ponca/Fitting>

Use as cmake subdirectory

Since version 0.2, Ponca can be included in existing cmake projects using add_subdirectory, as demonstrated at https://github.com/poncateam/ci-submodule-helper. In this example, Ponca is included as a git submodule, and included in the main CMakeLists.txt as follow:

find_package(Eigen3 QUIET)
add_executable(test main.cpp)
target_link_libraries(test Ponca::Fitting)


If you want to see Ponca in action, you will of course have to compile examples. And the same is true if you want to get the latest version of the documentation you are presently reading (well, not the exact same documentation, unless you've already compiled it, but then why are you reading this?). In both cases, you will have to use cmake, e.g.:

cmake . -B build # Creates build folder and run cmake in it

Available cmake options:

OPTION( PONCA_CONFIGURE_EXAMPLES "Include compilation rules for built-in examples" ON)
OPTION( PONCA_CONFIGURE_DOC "Include compilation rules for built-in documentation" ON)
OPTION( PONCA_CONFIGURE_TESTS "Include compilation rules for built-in tests" ON)
OPTION( PONCA_GENERATE_IDE_TARGETS "Generate targets to show source files in IDEs" ON)

Then compile using

cmake --build . --target TARGET

with TARGET equals to:

  • ponca-doc: generate documentation using Doxygen (requires PONCA_CONFIGURE_DOC)
  • ponca-examples: compile examples (requires PONCA_CONFIGURE_EXAMPLES)
  • install: generate relocable cmake package and install to CMAKE_INSTALL_PREFIX. Also install the documentation if previously compiled.
  • buildtests: compile tests (requires PONCA_CONFIGURE_TESTS)
  • test: run tests (you may also use ctest directly

Cmake package

We also provide a relocatable cmake package, generated by the install target. Example of file CMakeLists.txt using Ponca's cmake package:

cmake_minimum_required(VERSION 3.11)
project(PoncaTest LANGUAGES CXX)
find_package(Ponca REQUIRED)
add_executable(test main.cpp)
target_link_libraries(test Ponca::Fitting)
This Source Code Form is subject to the terms of the Mozilla Public License, v.

That said, the (quite heavy) use of templates in some modules may increase compilation times. Precompiled headers are recommended if this becomes a source of frustration. You will also have to pre-compile Ponca using nvcc if you want to use CUDA versions. This is explained in more details in related examples.

First steps

You're now ready to play with Ponca! Checkout the user manual here: User Manual.

If you get stuck or have a problem/bug using Ponca, please open an issue here: https://github.com/poncateam/ponca/issues. Remember that the library is under development so we are pleased to get your feedback.