CMake
- Author:
Bradley Chambers
- Contact:
- Date:
01/21/2015
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