include_guard(DIRECTORY) include(GNUInstallDirs) include(${CMAKE_SOURCE_DIR}/cmake/PackBasic.cmake) include(${CMAKE_SOURCE_DIR}/cmake/SetFirstDefined.cmake) function(install_basic) set(_options) set(_one_value_args NAME INCLUDE_DIR) set(_multi_value_args) cmake_parse_arguments(_ARGS "${_options}" "${_one_value_args}" "${_multi_value_args}" ${ARGN}) set_first_defined(_name _ARGS_NAME PROJECT_NAME) set_first_defined(_include_dir _ARGS_INCLUDE_DIR _name) file( GLOB_RECURSE ${_name}_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${_include_dir}/*.h) target_sources(${_name} PUBLIC FILE_SET HEADERS FILES ${${_name}_HEADERS}) install( TARGETS ${_name} EXPORT ${_name}Targets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} FILE_SET HEADERS DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ) install( EXPORT ${_name}Targets FILE ${_name}Targets.cmake NAMESPACE ${_name}:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${_name}) pack_basic() endfunction()