This commit is contained in:
Yuhang Zhao 2023-06-30 10:34:31 +08:00
parent 35a5dbbb0e
commit a19520edc8
1 changed files with 29 additions and 30 deletions

View File

@ -893,28 +893,37 @@ function(prepare_package_export)
endif() endif()
include(CMakePackageConfigHelpers) include(CMakePackageConfigHelpers)
include(GNUInstallDirs) include(GNUInstallDirs)
set(__dir_suffix "")
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(__dir_suffix "64")
endif()
set(__lib_dir "${CMAKE_INSTALL_LIBDIR}${__dir_suffix}")
set(__config_name "${PKG_ARGS_PACKAGE_NAME}Config")
set(__config_file "${__config_name}.cmake")
set(__version_name "${__config_name}Version")
set(__versoin_file "${__version_name}.cmake")
write_basic_package_version_file( write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/${PKG_ARGS_PACKAGE_NAME}ConfigVersion.cmake" "${CMAKE_CURRENT_BINARY_DIR}/${__versoin_file}"
VERSION ${PKG_ARGS_PACKAGE_VERSION} VERSION ${PKG_ARGS_PACKAGE_VERSION}
COMPATIBILITY AnyNewerVersion COMPATIBILITY AnyNewerVersion
) )
configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/${PKG_ARGS_PACKAGE_NAME}Config.cmake.in" configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/${__config_file}.in"
"${CMAKE_CURRENT_BINARY_DIR}/${PKG_ARGS_PACKAGE_NAME}Config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/${__config_file}"
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PKG_ARGS_PACKAGE_NAME}" INSTALL_DESTINATION "${__lib_dir}/cmake/${PKG_ARGS_PACKAGE_NAME}"
NO_CHECK_REQUIRED_COMPONENTS_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO
) )
if(NOT PKG_ARGS_NO_INSTALL) if(NOT PKG_ARGS_NO_INSTALL)
install(FILES install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/${PKG_ARGS_PACKAGE_NAME}Config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/${__config_file}"
"${CMAKE_CURRENT_BINARY_DIR}/${PKG_ARGS_PACKAGE_NAME}ConfigVersion.cmake" "${CMAKE_CURRENT_BINARY_DIR}/${__versoin_file}"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PKG_ARGS_PACKAGE_NAME}" DESTINATION "${__lib_dir}/cmake/${PKG_ARGS_PACKAGE_NAME}"
) )
endif() endif()
endfunction() endfunction()
function(setup_package_export) function(setup_package_export)
cmake_parse_arguments(PKG_ARGS "" cmake_parse_arguments(PKG_ARGS ""
"TARGET;BIN_PATH;LIB_PATH;INCLUDE_PATH;NAMESPACE;PACKAGE_NAME" "TARGET;NAMESPACE;PACKAGE_NAME"
"PUBLIC_HEADERS;PRIVATE_HEADERS;ALIAS_HEADERS" ${ARGN}) "PUBLIC_HEADERS;PRIVATE_HEADERS;ALIAS_HEADERS" ${ARGN})
if(NOT PKG_ARGS_TARGET) if(NOT PKG_ARGS_TARGET)
message(AUTHOR_WARNING "setup_package_export: You need to specify a target for this function!") message(AUTHOR_WARNING "setup_package_export: You need to specify a target for this function!")
@ -931,28 +940,18 @@ function(setup_package_export)
if(PKG_ARGS_UNPARSED_ARGUMENTS) if(PKG_ARGS_UNPARSED_ARGUMENTS)
message(AUTHOR_WARNING "setup_package_export: Unrecognized arguments: ${PKG_ARGS_UNPARSED_ARGUMENTS}") message(AUTHOR_WARNING "setup_package_export: Unrecognized arguments: ${PKG_ARGS_UNPARSED_ARGUMENTS}")
endif() endif()
set(__dir_suffix "")
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(__dir_suffix "64")
endif()
include(GNUInstallDirs) include(GNUInstallDirs)
set(__bin_dir "${CMAKE_INSTALL_BINDIR}") set(__lib_dir "${CMAKE_INSTALL_LIBDIR}${__dir_suffix}")
if(PKG_ARGS_BIN_PATH)
set(__bin_dir "${__bin_dir}/${PKG_ARGS_BIN_PATH}")
endif()
set(__lib_dir "${CMAKE_INSTALL_LIBDIR}")
if(PKG_ARGS_LIB_PATH)
set(__lib_dir "${__lib_dir}/${PKG_ARGS_LIB_PATH}")
endif()
set(__inc_dir "${CMAKE_INSTALL_INCLUDEDIR}") set(__inc_dir "${CMAKE_INSTALL_INCLUDEDIR}")
if(PKG_ARGS_INCLUDE_PATH) set(__export_name "${PKG_ARGS_TARGET}Targets")
set(__inc_dir "${__inc_dir}/${PKG_ARGS_INCLUDE_PATH}") set(__export_file "${__export_name}.cmake")
endif() install(TARGETS ${PKG_ARGS_TARGET} EXPORT ${__export_name})
install(TARGETS ${PKG_ARGS_TARGET} export(EXPORT ${__export_name}
EXPORT ${PKG_ARGS_TARGET}Targets FILE "${CMAKE_CURRENT_BINARY_DIR}/cmake/${__export_file}"
RUNTIME DESTINATION "${__bin_dir}"
LIBRARY DESTINATION "${__lib_dir}"
ARCHIVE DESTINATION "${__lib_dir}"
INCLUDES DESTINATION "${__inc_dir}"
)
export(EXPORT ${PKG_ARGS_TARGET}Targets
FILE "${CMAKE_CURRENT_BINARY_DIR}/cmake/${PKG_ARGS_TARGET}Targets.cmake"
NAMESPACE ${PKG_ARGS_NAMESPACE}:: NAMESPACE ${PKG_ARGS_NAMESPACE}::
) )
if(PKG_ARGS_PUBLIC_HEADERS) if(PKG_ARGS_PUBLIC_HEADERS)
@ -964,8 +963,8 @@ function(setup_package_export)
if(PKG_ARGS_ALIAS_HEADERS) if(PKG_ARGS_ALIAS_HEADERS)
install(FILES ${PKG_ARGS_ALIAS_HEADERS} DESTINATION "${__inc_dir}") install(FILES ${PKG_ARGS_ALIAS_HEADERS} DESTINATION "${__inc_dir}")
endif() endif()
install(EXPORT ${PKG_ARGS_TARGET}Targets install(EXPORT ${__export_name}
FILE ${PKG_ARGS_TARGET}Targets.cmake FILE ${__export_file}
NAMESPACE ${PKG_ARGS_NAMESPACE}:: NAMESPACE ${PKG_ARGS_NAMESPACE}::
DESTINATION "${__lib_dir}/cmake/${PKG_ARGS_PACKAGE_NAME}" DESTINATION "${__lib_dir}/cmake/${PKG_ARGS_PACKAGE_NAME}"
) )