@@ -21,7 +21,20 @@ include(vtkAddonFunctionAddExecutable)
2121#
2222# VTK
2323#
24- find_package (VTK REQUIRED )
24+ set (vtkAddon_VTK_COMPONENTS
25+ CommonComputationalGeometry
26+ FiltersModeling
27+ FiltersHybrid
28+ FiltersSources
29+ ImagingGeneral
30+ RenderingOpenGL2
31+ RenderingVolumeOpenGL2
32+ eigen
33+ )
34+ if (vtkAddon_WRAP_PYTHON)
35+ list (APPEND vtkAddon_VTK_COMPONENTS Python)
36+ endif ()
37+ find_package (VTK REQUIRED COMPONENTS ${vtkAddon_VTK_COMPONENTS} )
2538if (${VTK_VERSION} VERSION_LESS "8.90" )
2639 include (${VTK_USE_FILE} )
2740endif ()
@@ -59,35 +72,14 @@ configure_file(
5972 ${CMAKE_CURRENT_BINARY_DIR} /${configure_header_file}
6073 )
6174
62- # --------------------------------------------------------------------------
63- # Install headers
64- # --------------------------------------------------------------------------
65-
66- if (NOT DEFINED ${PROJECT_NAME} _INSTALL_NO_DEVELOPMENT)
67- set (${PROJECT_NAME} _INSTALL_NO_DEVELOPMENT ON )
68- endif ()
69-
70- if (NOT ${PROJECT_NAME} _INSTALL_NO_DEVELOPMENT)
71-
72- if (NOT DEFINED ${PROJECT_NAME} _INSTALL_INCLUDE_DIR)
73- set (${PROJECT_NAME} _INSTALL_INCLUDE_DIR include/${PROJECT_NAME} )
74- endif ()
75-
76- file (GLOB headers "${CMAKE_CURRENT_SOURCE_DIR} /*.h" )
77- install (
78- FILES ${headers} ${CMAKE_CURRENT_BINARY_DIR} /${configure_header_file}
79- DESTINATION ${${PROJECT_NAME} _INSTALL_INCLUDE_DIR} COMPONENT Development)
80-
81- file (GLOB headers "${CMAKE_CURRENT_SOURCE_DIR} /*.txx" )
82- install (
83- FILES ${headers} ${CMAKE_CURRENT_BINARY_DIR} /${configure_header_file}
84- DESTINATION ${${PROJECT_NAME} _INSTALL_INCLUDE_DIR} COMPONENT Development)
85- endif ()
86-
8775# --------------------------------------------------------------------------
8876# Sources
8977# --------------------------------------------------------------------------
9078set (vtkAddon_SRCS
79+ vtkAddon.h
80+ ${CMAKE_CURRENT_BINARY_DIR} /${configure_header_file}
81+ vtkAddonExport.h
82+ vtkAddonTestingMacros.h
9183 vtkAddonMathUtilities.cxx
9284 vtkAddonMathUtilities.h
9385 vtkAddonSetGet.h
@@ -157,14 +149,6 @@ set_source_files_properties(
157149 vtkLoggingMacros.h
158150 WRAP_EXCLUDE
159151 )
160- # --------------------------------------------------------------------------
161- # Include dirs
162- # --------------------------------------------------------------------------
163- set (include_dirs
164- ${CMAKE_CURRENT_SOURCE_DIR}
165- ${CMAKE_CURRENT_BINARY_DIR}
166- )
167- include_directories (BEFORE ${include_dirs} )
168152
169153# --------------------------------------------------------------------------
170154# Build library
@@ -175,6 +159,11 @@ set(srcs ${vtkAddon_SRCS})
175159add_library (${lib_name} ${srcs} )
176160
177161target_link_libraries (${lib_name} ${vtkAddon_LIBS} )
162+ target_include_directories (${lib_name} BEFORE PUBLIC
163+ $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR} >
164+ $<BUILD_INTERFACE :${CMAKE_CURRENT_BINARY_DIR} >
165+ $<INSTALL_INTERFACE :include >
166+ )
178167
179168# --------------------------------------------------------------------------
180169# Folder
@@ -207,6 +196,7 @@ if(NOT DEFINED ${PROJECT_NAME}_INSTALL_LIB_DIR)
207196endif ()
208197
209198install (TARGETS ${lib_name}
199+ EXPORT vtkAddonTargets
210200 RUNTIME DESTINATION ${${PROJECT_NAME} _INSTALL_BIN_DIR} COMPONENT RuntimeLibraries
211201 LIBRARY DESTINATION ${${PROJECT_NAME} _INSTALL_LIB_DIR} COMPONENT RuntimeLibraries
212202 ARCHIVE DESTINATION ${${PROJECT_NAME} _INSTALL_LIB_DIR} COMPONENT Development
@@ -272,28 +262,56 @@ set(${PROJECT_NAME}_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BIN
272262configure_file (
273263 ${CMAKE_CURRENT_SOURCE_DIR} /vtkAddonConfig.cmake.in
274264 ${CMAKE_CURRENT_BINARY_DIR} /vtkAddonConfig.cmake
275- )
276-
277- # Configuret vtkAddonConfig.cmake for an install tree
278- configure_file (
279- ${CMAKE_CURRENT_SOURCE_DIR} /vtkAddonInstallConfig.cmake.in
280- ${CMAKE_CURRENT_BINARY_DIR} /install/vtkAddonConfig.cmake
265+ @ONLY
281266 )
282267
283268# --------------------------------------------------------------------------
284- # Install configuration files
269+ # Install development files
285270# --------------------------------------------------------------------------
286271
287- # Set vtkAddon_INSTALL_CMAKE_DIR
272+ if (NOT DEFINED ${PROJECT_NAME} _INSTALL_NO_DEVELOPMENT)
273+ set (${PROJECT_NAME} _INSTALL_NO_DEVELOPMENT ON )
274+ endif ()
275+
276+ if (NOT DEFINED ${PROJECT_NAME} _INSTALL_INCLUDE_DIR)
277+ set (${PROJECT_NAME} _INSTALL_INCLUDE_DIR include/${PROJECT_NAME} )
278+ endif ()
279+
288280if (NOT DEFINED ${PROJECT_NAME} _INSTALL_CMAKE_DIR)
289- set (${PROJECT_NAME} _INSTALL_CMAKE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /CMake )
281+ set (${PROJECT_NAME} _INSTALL_CMAKE_DIR lib/cmake/ ${PROJECT_NAME} )
290282endif ()
291283
292- # Install vtkAddonConfig.cmake
293- install (
294- FILES ${CMAKE_CURRENT_BINARY_DIR} /install/vtkAddonConfig.cmake
295- DESTINATION ${${PROJECT_NAME} _INSTALL_CMAKE_DIR}
296- )
284+ if (NOT ${PROJECT_NAME} _INSTALL_NO_DEVELOPMENT)
285+ # Install vtkAddon headers, uses a pattern because they are not explicitly listed
286+ set (vtkAddon_HEADERS ${vtkAddon_SRCS} )
287+ list (FILTER vtkAddon_HEADERS INCLUDE REGEX ".*\\ .(h|txx)$" )
288+ install (
289+ FILES ${vtkAddon_HEADERS}
290+ DESTINATION ${${PROJECT_NAME} _INSTALL_INCLUDE_DIR}
291+ COMPONENT Development
292+ )
293+
294+ # Configure vtkAddonConfig.cmake for an install tree
295+ include (CMakePackageConfigHelpers )
296+ configure_package_config_file (
297+ ${CMAKE_CURRENT_SOURCE_DIR} /vtkAddonInstallConfig.cmake.in
298+ ${CMAKE_CURRENT_BINARY_DIR} /install/vtkAddonConfig.cmake
299+ INSTALL_DESTINATION "${${PROJECT_NAME} _INSTALL_CMAKE_DIR}"
300+ )
301+
302+ install (
303+ FILES ${CMAKE_CURRENT_BINARY_DIR} /install/vtkAddonConfig.cmake
304+ DESTINATION "${${PROJECT_NAME} _INSTALL_CMAKE_DIR}"
305+ COMPONENT Development
306+ )
307+
308+ install (
309+ EXPORT vtkAddonTargets
310+ FILE ${PROJECT_NAME} Targets .cmake
311+ DESTINATION "${${PROJECT_NAME} _INSTALL_CMAKE_DIR}"
312+ COMPONENT Development
313+ )
314+ endif ()
297315
298316# Install vtkAddon CMake files
299317install (
@@ -305,5 +323,6 @@ install(
305323 ${CMAKE_SOURCE_DIR} /CMake/vtkWrapperInit.data.in
306324 ${CMAKE_SOURCE_DIR} /CMake/vtkWrapPython.cmake
307325 ${CMAKE_SOURCE_DIR} /CMake/WindowsApplicationUseUtf8.manifest
308- DESTINATION ${${PROJECT_NAME} _INSTALL_CMAKE_DIR} COMPONENT Development
326+ DESTINATION "${${PROJECT_NAME} _INSTALL_CMAKE_DIR}"
327+ COMPONENT Development
309328 )
0 commit comments