Writing and building a PDAL Plugin

Writing and building a PDAL Plugin#

A PDAL plugin is a specially-named dynamically linked library that serves as a stage or a kernel (PDAL command). The PDAL program will be able to use a properly-made plugin when it is placed in an appropriate location. PDAL will search the following paths (relative to the current working directory) for plugins: ., ./lib, ../lib, ./bin, ../bin. You can also override the default search path by setting the environment variable PDAL_DRIVER_PATH to a list of directories that pdal should search for plugins.

PDAL stage plugins must be named:

libpdal_plugin_<plugin type>_<plugin name>.<shared library extension>

where plugin name is one of reader, writer or filter.

PDAL kernel plugins must be named:

libpdal_plugin_kernel_<plugin name>.<shared library extension>

See the tutorials Writing a reader, Writing a filter or Writing a writer for step-by-step instructions on creating a PDAL stage plugin. See Writing a kernel for similar information on creating a PDAL kernel plugin. The tutorials provide a sample CMakeLists.txt that can serve as a basis for building your plugin with a PDAL installation. A simple macro, PDAL_CREATE_PLUGIN, is now provided with PDAL that makes it even easier to build a plugin. You can use the macro by creating a file called CMakeLists.txt like this:

cmake_minimum_required(VERSION 3.5)
project(MY_READER LANGUAGES CXX)
find_package(PDAL REQUIRED)

set(SRCS MyGoodReader.cpp)

PDAL_CREATE_PLUGIN(
    TYPE reader
    NAME mygood
    VERSION 1.0
    SOURCES ${SRCS}
)

Once your plugin is built, copy it to an appropriate location so that it can be found by PDAL and it should load and run. If your plugin doesn’t load, Use the PDAL --debug option to get information about the plugin loading process.