include_guard(DIRECTORY) include(CMakePackageConfigHelpers) include(${CMAKE_SOURCE_DIR}/cmake/SetFirstDefined.cmake) function(pack_basic) set(_options) set(_one_value_args NAME) set(_multi_value_args) cmake_parse_arguments(_ARGS "${_options}" "${_one_value_args}" "${_multi_value_args}" ${ARGN}) set_first_defined(_name _ARGS_NAME PROJECT_NAME) find_package(Git QUIET) if(GIT_FOUND) execute_process( COMMAND ${GIT_EXECUTABLE} describe --tags --always --dirty WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE PROJECT_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE ) endif() if(NOT GIT_FOUND OR PROJECT_VERSION STREQUAL "") set(PROJECT_VERSION "0.0.0") endif() write_basic_package_version_file( "${CMAKE_CURRENT_BINARY_DIR}/${_name}ConfigVersion.cmake" VERSION ${PROJECT_VERSION} COMPATIBILITY AnyNewerVersion ) configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/${_name}Config.cmake" INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${_name} ) install( FILES "${CMAKE_CURRENT_BINARY_DIR}/${_name}Config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/${_name}ConfigVersion.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${_name}) endfunction()