CMake#
This tutorial will explain how to use PDAL in your own projects using CMake. A more complete, working example can be found here.
Note
We assume you have either built or installed PDAL.
Basic CMake configuration#
Begin by creating a file named CMakeLists.txt that contains:
cmake_minimum_required(VERSION 2.8)
project(MY_PDAL_PROJECT)
find_package(PDAL 1.0.0 REQUIRED CONFIG)
include_directories(${PDAL_INCLUDE_DIRS})
link_directories(${PDAL_LIBRARY_DIRS})
add_definitions(${PDAL_DEFINITIONS})
set(CMAKE_CXX_FLAGS "-std=c++11")
add_executable(tutorial tutorial.cpp)
target_link_libraries(tutorial PRIVATE ${PDAL_LIBRARIES})
CMakeLists explained#
cmake_minimum_required(VERSION 2.8.12)
The cmake_minimum_required
command specifies the minimum required version of
CMake. We use some recent additions to CMake in PDAL that require version
2.8.12.
project(MY_PDAL_PROJECT)
The CMake project
command names your project and sets a number of useful
CMake variables.
find_package(PDAL 1.0.0 REQUIRED CONFIG)
We next ask CMake to locate the PDAL package, requiring version 1.0.0 or higher.
include_directories(${PDAL_INCLUDE_DIRS})
link_directories(${PDAL_LIBRARY_DIRS})
add_definitions(${PDAL_DEFINITIONS})
If PDAL is found, the following variables will be set:
PDAL_FOUND: set to 1 if PDAL is found, otherwise unset
PDAL_INCLUDE_DIRS: set to the paths to PDAL installed headers and the dependency headers
PDAL_LIBRARIES: set to the file names of the built and installed PDAL libraries
PDAL_LIBRARY_DIRS: set to the paths where PDAL libraries and 3rd party dependencies reside
PDAL_VERSION: the detected version of PDAL
PDAL_DEFINITIONS: list the needed preprocessor definitions and compiler flags
set(CMAKE_CXX_FLAGS "-std=c++11")
We haven’t quite implemented the setting of PDAL_DEFINITIONS within the
PDALConfig.cmake
file, so for now you should specify the c++11 compiler flag,
as we use it extensively throughout PDAL.
add_executable(tutorial tutorial.cpp)
We use the add_executable
command to tell CMake to create an executable named
tutorial
from the source file tutorial.cpp
.
target_link_libraries(tutorial PRIVATE ${PDAL_LIBRARIES})
We assume that the tutorial executable makes calls to PDAL functions. To make
the linker aware of the PDAL libraries, we use target_link_libraries
to link
tutorial
against the PDAL_LIBRARIES.
Compiling the project#
Make a build
directory, where compilation will occur:
$ cd /PATH/TO/MY/PDAL/PROJECT
$ mkdir build
Run cmake from within the build directory:
$ cd build
$ cmake ..
Now, build the project:
$ make
The project is now built and ready to run:
$ ./tutorial