-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
117 lines (99 loc) · 3.58 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
cmake_minimum_required(VERSION 3.11 FATAL_ERROR)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
set (CMAKE_CXX_STANDARD 17)
set(version 1.0)
project(vtkTileHierarchy)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake)
option(BUILD_PYTHON "Build the python wrappers" OFF)
message(STATUS "Rpath is: ${CMAKE_INSTALL_RPATH}")
set(VTK_COMPONENTS
CommonCore
Python
RenderingOpenGL2)
# VTK dependency
find_package(VTK 9 REQUIRED
COMPONENTS
${VTK_COMPONENTS}
)
message(STATUS "VTK python version: ${VTK_PYTHON_VERSION}")
if(${VTK_VERSION} VERSION_LESS 9.0)
message(FATAL_ERROR "VTK >= 9.0 is REQUIRED")
endif()
find_package(JsonCpp REQUIRED)
include_directories(${JSONCPP_INCLUDE_DIRS})
message(STATUS "JSONCPP include is ${JsonCpp_LIBRARIES}")
find_package(CURL REQUIRED)
if(CURL_FOUND)
include_directories(${CURL_INCLUDE_DIR})
endif()
include(GNUInstallDirs)
set(_shared_default ON)
get_target_property(_vtk_libtype VTK::CommonCore TYPE)
if (_vtk_libtype STREQUAL "STATIC_LIBRARY")
set(_shared_default OFF)
endif ()
option(BUILD_SHARED_LIBS "Build shared or static libraries" "${_shared_default}")
if(BUILD_PYTHON)
message(STATUS "Building python module")
set(OUTPUT_DIR "vtk_tile_hierarchy/lib")
set(INSTALL_HEADERS OFF)
#message(STATUS "Python include ${Python3_INCLUDE_DIR}")
include_directories("${Python3_INCLUDE_DIR}")
else()
set(OUTPUT_DIR ${LIBRARY_OUTPUT_DIRECTORY})
set(INSTALL_HEADERS ON)
endif()
# First we scan the modules in our project to find out the dependency graph
# between them.
vtk_module_scan(
# With only 1 module file, this is easier. With more,
# `vtk_module_find_modules` would be preferred.
MODULE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/vtk.module"
# Not building the only module we have is silly.
REQUEST_MODULES vtkTileHierarchy
# Store the list of provided modules from this scan.
PROVIDES_MODULES modules
# Enable the tests for our modules.
ENABLE_TESTS OFF
)
# Build the module we just scanned.
vtk_module_build(MODULES ${modules}
LIBRARY_DESTINATION "${OUTPUT_DIR}"
INSTALL_HEADERS ${INSTALL_HEADERS}
INSTALL_EXPORT ${CMAKE_PROJECT_NAME}
)
if(BUILD_PYTHON)
# Wrap it with Python.
vtk_module_wrap_python(
MODULES ${modules}
PYTHON_PACKAGE "vtk_tile_hierarchy"
MODULE_DESTINATION "."
LIBRARY_DESTINATION "${OUTPUT_DIR}"
# Static Python modules are almost never wanted.
BUILD_STATIC OFF
INSTALL_HEADERS OFF)
else()
install(EXPORT ${CMAKE_PROJECT_NAME}
FILE "vtktilehierarchy-targets.cmake"
NAMESPACE ${CMAKE_PROJECT_NAME}::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME}
)
include(CMakePackageConfigHelpers)
set(INCLUDE_INSTALL_DIR "include/")
configure_package_config_file("vtktilehierarchy-config.cmake.in"
"${CMAKE_BINARY_DIR}/vtktilehierarchy-config.cmake"
INSTALL_DESTINATION lib/cmake
PATH_VARS INCLUDE_INSTALL_DIR
)
write_basic_package_version_file(
"${CMAKE_BINARY_DIR}/vtktilehierarchy-config-version.cmake"
VERSION 0.1.0
COMPATIBILITY AnyNewerVersion
)
install(
FILES
"${CMAKE_BINARY_DIR}/vtktilehierarchy-config.cmake"
"${CMAKE_BINARY_DIR}/vtktilehierarchy-config-version.cmake"
DESTINATION lib/cmake/${CMAKE_PROJECT_NAME}
)
endif()