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++.

    _images/ccache.png
  • 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.

    _images/distcc.png
  • Compiler optimizations

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

    _images/optimize.png
  • Single compilation units

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

    _images/unitybuild.jpg

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