| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- function(igl_install module_name)
- if(NOT LIBIGL_INSTALL)
- return()
- endif()
- # Check if category is `copyleft` or `restricted`
- if(${module_name} MATCHES "^igl_copyleft")
- set(suffix "_copyleft")
- elseif(${module_name} MATCHES "^igl_restricted")
- set(suffix "_restricted")
- else()
- set(suffix "")
- endif()
- ########################
- # Install CMake target #
- ########################
- set_property(TARGET ${module_name} PROPERTY EXPORT_NAME ${module_export})
- include(GNUInstallDirs)
- install(TARGETS ${module_name}
- EXPORT LibiglTargets${suffix}
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
- COMPONENT LibiglRuntime
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- COMPONENT LibiglRuntime
- NAMELINK_COMPONENT LibiglDevelopment
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- COMPONENT LibiglRuntime
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
- COMPONENT LibiglDevelopment
- INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
- )
- ###################
- # Install headers #
- ###################
- # TODO: When moving module definition to their own CMakeLists.txt, we should
- # refactor this to use the folder where the target was defined (via the
- # target property SOURCE_DIR).
- set(target_include_dir ${libigl_SOURCE_DIR}/include)
- foreach(source_path IN ITEMS ${ARGN})
- # Filter out .cpp files in "static lib" mode
- if(LIBIGL_USE_STATIC_LIBRARY)
- get_filename_component(extension ${source_path} LAST_EXT)
- if(extension MATCHES ".cpp")
- continue()
- endif()
- endif()
- # Compute relative path to copy
- get_filename_component(source_directory ${source_path} DIRECTORY)
- file(RELATIVE_PATH source_subdir ${target_include_dir} ${source_directory})
- # Create install rule to copy specific header
- install(
- FILES ${source_path}
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${source_subdir}
- )
- endforeach()
- endfunction()
|