1
###############################################################################
3
# src/CMakeLists.txt controls building of libLAS library
5
# Copyright (c) 2009 Mateusz Loskot <mateusz@loskot.net>
7
###############################################################################
9
# Collect dependencies configuration
17
###############################################################################
18
# Source files specification
20
set(LIBLAS_HEADERS_DIR ../include/liblas)
23
${LIBLAS_HEADERS_DIR}/chipper.hpp
24
${LIBLAS_HEADERS_DIR}/exception.hpp
25
${LIBLAS_HEADERS_DIR}/export.hpp
26
${LIBLAS_HEADERS_DIR}/factory.hpp
27
${LIBLAS_HEADERS_DIR}/guid.hpp
28
${LIBLAS_HEADERS_DIR}/iterator.hpp
29
${LIBLAS_HEADERS_DIR}/bounds.hpp
30
${LIBLAS_HEADERS_DIR}/classification.hpp
31
${LIBLAS_HEADERS_DIR}/color.hpp
32
${LIBLAS_HEADERS_DIR}/dimension.hpp
33
${LIBLAS_HEADERS_DIR}/error.hpp
34
${LIBLAS_HEADERS_DIR}/filter.hpp
35
${LIBLAS_HEADERS_DIR}/header.hpp
36
${LIBLAS_HEADERS_DIR}/index.hpp
37
${LIBLAS_HEADERS_DIR}/point.hpp
38
${LIBLAS_HEADERS_DIR}/reader.hpp
39
${LIBLAS_HEADERS_DIR}/schema.hpp
40
${LIBLAS_HEADERS_DIR}/spatialreference.hpp
41
${LIBLAS_HEADERS_DIR}/transform.hpp
42
${LIBLAS_HEADERS_DIR}/variablerecord.hpp
43
${LIBLAS_HEADERS_DIR}/writer.hpp
44
${LIBLAS_HEADERS_DIR}/liblas.hpp
45
${LIBLAS_HEADERS_DIR}/utility.hpp
46
${LIBLAS_HEADERS_DIR}/version.hpp)
48
set(LIBLAS_EXTERNAL_HPP)
50
set(LIBLAS_EXTERNAL_PROPERTY_TREE_HPP
51
${LIBLAS_HEADERS_DIR}/external/property_tree/exceptions.hpp
52
${LIBLAS_HEADERS_DIR}/external/property_tree/id_translator.hpp
53
${LIBLAS_HEADERS_DIR}/external/property_tree/info_parser.hpp
54
${LIBLAS_HEADERS_DIR}/external/property_tree/ini_parser.hpp
55
${LIBLAS_HEADERS_DIR}/external/property_tree/json_parser.hpp
56
${LIBLAS_HEADERS_DIR}/external/property_tree/ptree.hpp
57
${LIBLAS_HEADERS_DIR}/external/property_tree/ptree_fwd.hpp
58
${LIBLAS_HEADERS_DIR}/external/property_tree/ptree_serialization.hpp
59
${LIBLAS_HEADERS_DIR}/external/property_tree/stream_translator.hpp
60
${LIBLAS_HEADERS_DIR}/external/property_tree/string_path.hpp
61
${LIBLAS_HEADERS_DIR}/external/property_tree/xml_parser.hpp)
63
set(LIBLAS_EXTERNAL_PROPERTY_TREE_DETAIL_HPP
64
${LIBLAS_HEADERS_DIR}/external/property_tree/detail/exception_implementation.hpp
65
${LIBLAS_HEADERS_DIR}/external/property_tree/detail/file_parser_error.hpp
66
${LIBLAS_HEADERS_DIR}/external/property_tree/detail/info_parser_error.hpp
67
${LIBLAS_HEADERS_DIR}/external/property_tree/detail/info_parser_read.hpp
68
${LIBLAS_HEADERS_DIR}/external/property_tree/detail/info_parser_utils.hpp
69
${LIBLAS_HEADERS_DIR}/external/property_tree/detail/info_parser_write.hpp
70
${LIBLAS_HEADERS_DIR}/external/property_tree/detail/info_parser_writer_settings.hpp
71
${LIBLAS_HEADERS_DIR}/external/property_tree/detail/json_parser_error.hpp
72
${LIBLAS_HEADERS_DIR}/external/property_tree/detail/json_parser_read.hpp
73
${LIBLAS_HEADERS_DIR}/external/property_tree/detail/json_parser_write.hpp
74
${LIBLAS_HEADERS_DIR}/external/property_tree/detail/ptree_implementation.hpp
75
${LIBLAS_HEADERS_DIR}/external/property_tree/detail/ptree_utils.hpp
76
${LIBLAS_HEADERS_DIR}/external/property_tree/detail/rapidxml.hpp
77
${LIBLAS_HEADERS_DIR}/external/property_tree/detail/xml_parser_error.hpp
78
${LIBLAS_HEADERS_DIR}/external/property_tree/detail/xml_parser_flags.hpp
79
${LIBLAS_HEADERS_DIR}/external/property_tree/detail/xml_parser_read_rapidxml.hpp
80
${LIBLAS_HEADERS_DIR}/external/property_tree/detail/xml_parser_utils.hpp
81
${LIBLAS_HEADERS_DIR}/external/property_tree/detail/xml_parser_write.hpp
82
${LIBLAS_HEADERS_DIR}/external/property_tree/detail/xml_parser_writer_settings.hpp)
85
${LIBLAS_HEADERS_DIR}/detail/binary.hpp
86
${LIBLAS_HEADERS_DIR}/detail/endian.hpp
87
${LIBLAS_HEADERS_DIR}/detail/fwd.hpp
88
${LIBLAS_HEADERS_DIR}/detail/pointrecord.hpp
89
${LIBLAS_HEADERS_DIR}/detail/timer.hpp
90
${LIBLAS_HEADERS_DIR}/detail/private_utility.hpp
91
${LIBLAS_HEADERS_DIR}/detail/singleton.hpp
92
${LIBLAS_HEADERS_DIR}/detail/zippoint.hpp)
94
set(LIBLAS_DETAIL_INDEX_HPP
95
${LIBLAS_HEADERS_DIR}/detail/index/indexoutput.hpp
96
${LIBLAS_HEADERS_DIR}/detail/index/indexcell.hpp)
98
set(LIBLAS_DETAIL_READER_HPP
99
${LIBLAS_HEADERS_DIR}/detail/reader/cachedreader.hpp
100
${LIBLAS_HEADERS_DIR}/detail/reader/reader.hpp
101
${LIBLAS_HEADERS_DIR}/detail/reader/zipreader.hpp
102
${LIBLAS_HEADERS_DIR}/detail/reader/header.hpp
105
set(LIBLAS_DETAIL_WRITER_HPP
106
${LIBLAS_HEADERS_DIR}/detail/writer/writer.hpp
107
${LIBLAS_HEADERS_DIR}/detail/writer/zipwriter.hpp
108
${LIBLAS_HEADERS_DIR}/detail/writer/point.hpp
109
${LIBLAS_HEADERS_DIR}/detail/writer/header.hpp)
131
set(LIBLAS_DETAIL_CPP
137
set(LIBLAS_DETAIL_INDEX_CPP
138
detail/index/indexcell.cpp
139
detail/index/indexoutput.cpp)
141
set(LIBLAS_DETAIL_READER_CPP
142
detail/reader/header.cpp
143
detail/reader/reader.cpp
144
detail/reader/zipreader.cpp
145
detail/reader/cachedreader.cpp)
147
set(LIBLAS_DETAIL_WRITER_CPP
148
detail/writer/header.cpp
149
detail/writer/point.cpp
150
detail/writer/zipwriter.cpp
151
detail/writer/writer.cpp)
153
# Group source files for IDE source explorers (e.g. Visual Studio)
154
source_group("CMake Files" FILES CMakeLists.txt)
155
source_group("Header Files" FILES ${LIBLAS_HPP})
156
source_group("Header Files\\external" FILES ${LIBLAS_EXTERNAL_HPP})
157
source_group("Header Files\\external\\property_tree" FILES ${LIBLAS_EXTERNAL_PROPERTY_TREE_HPP})
158
source_group("Header Files\\external\\property_tree\\detail" FILES ${LIBLAS_EXTERNAL_PROPERTY_TREE_DETAIL_HPP})
159
source_group("Header Files\\detail" FILES ${LIBLAS_DETAIL_HPP})
160
source_group("Header Files\\detail\\index" FILES ${LIBLAS_DETAIL_INDEX_HPP})
161
source_group("Header Files\\detail\\reader" FILES ${LIBLAS_DETAIL_READER_HPP})
162
source_group("Header Files\\detail\\writer" FILES ${LIBLAS_DETAIL_WRITER_HPP})
163
source_group("Source Files" FILES ${LIBLAS_CPP})
164
source_group("Source Files\\detail" FILES ${LIBLAS_DETAIL_CPP})
165
source_group("Source Files\\detail\\index" FILES ${LIBLAS_DETAIL_INDEX_CPP})
166
source_group("Source Files\\detail\\reader" FILES ${LIBLAS_DETAIL_READER_CPP})
167
source_group("Source Files\\detail\\writer" FILES ${LIBLAS_DETAIL_WRITER_CPP})
169
source_group("Source Files\\gdal" FILES ${LIBLAS_GDAL_CPP})
172
# Diable Visual C++ language extensions when building libLAS library
173
# Need this enabled for boost to work -- hobu
176
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Za")
180
# Standard include directory of libLAS library
181
include_directories(../include)
183
###############################################################################
188
${LIBLAS_EXTERNAL_HPP}
189
${LIBLAS_EXTERNAL_PROPERTY_TREE_HPP}
190
${LIBLAS_EXTERNAL_PROPERTY_TREE_DETAIL_HPP}
192
${LIBLAS_DETAIL_READER_HPP}
193
${LIBLAS_DETAIL_WRITER_HPP}
194
${LIBLAS_DETAIL_INDEX_CPP}
197
${LIBLAS_DETAIL_READER_CPP}
198
${LIBLAS_DETAIL_WRITER_CPP}
202
${LIBLAS_HEADERS_DIR}/capi/las_config.h
203
${LIBLAS_HEADERS_DIR}/capi/las_version.h
204
${LIBLAS_HEADERS_DIR}/capi/liblas.h
208
# This hack is required to correctly link static into shared library.
209
# Such practice is not recommended as not portable, instead each library,
210
# static and shared should be built from sources separately.
212
# add_definitions("-fPIC")
216
add_definitions("-DLAS_DLL_EXPORT=1")
217
if (NOT WITH_STATIC_LASZIP)
218
add_definitions("-DLASZIP_DLL_IMPORT=1")
222
add_library(${LIBLAS_LIB_NAME} SHARED ${LIBLAS_SOURCES})
223
add_library(${LIBLAS_C_LIB_NAME} SHARED ${LIBLAS_C_SOURCES})
225
target_link_libraries(${LIBLAS_LIB_NAME}
233
target_link_libraries(${LIBLAS_C_LIB_NAME}
241
set_target_properties(${LIBLAS_LIB_NAME}
242
PROPERTIES SOVERSION "${LIBLAS_LIB_SOVERSION}" )
243
set_target_properties(${LIBLAS_C_LIB_NAME}
244
PROPERTIES SOVERSION "${LIBLAS_C_LIB_SOVERSION}" )
247
set_target_properties(
250
INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
251
set_target_properties(
254
INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
257
###############################################################################
258
# Targets installation
260
install(TARGETS ${LIBLAS_LIB_NAME} ${LIBLAS_C_LIB_NAME}
261
RUNTIME DESTINATION ${LIBLAS_BIN_DIR}
262
LIBRARY DESTINATION ${LIBLAS_LIB_DIR}
263
ARCHIVE DESTINATION ${LIBLAS_LIB_DIR})
265
install(DIRECTORY ${LIBLAS_HEADERS_DIR}
266
DESTINATION ${LIBLAS_INCLUDE_DIR}
267
FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp")