The following presents a set of advanced topics regarding PCL.

Compiling PCL

PCL uses modern C++ template programming in order to achieve maximum generality and reusability of its components. Due to intricate details of the current generation of C++ compilers however, the usage of templated code introduces additional compile-time delays. We present a series of tricks that, if used appropriately, will save you a lot of headaches and will speed up the compilation of your project.

  • Using CCache to speed up compilation

    CCache is a compiler cache. It speeds up recompilation by caching previous compilations and detecting when the same compilation is being done again. Supported languages are C, C++, Objective-C and Objective-C++.

  • Using DistCC to speed up compilation

    distcc is a program to distribute builds of C, C++, Objective C or Objective C++ code across several machines on a network. distcc should always generate the same results as a local build, is simple to install and use, and is usually much faster than a local compile.

  • Compiler optimizations

    Depending on what compiler optimizations you use, your code might behave differently, both at compile time and at run time.

  • Single compilation units

    In certain cases, it’s better to concatenate source files into single compilation units to speed up compiling.


Developing PCL code

To make our lives easier, and to be able to read and integrate code from each other without causing ourselves headaches, we assembled a set of rules for PCL development that everyone should follow:

Committing changes to the git master

In order to oversee the commit messages more easier and that the changelist looks homogeneous please keep the following format:

“* <fixed|bugfix|changed|new> X in @<classname>@ (#<bug number>)”

Improving the PCL documentation

  • How to write a good tutorial

    In case you want to contribute/help PCL by improving the existing documentation and tutorials/examples, please read our short guide on how to start.

How to build a minimal example