Skip to content

Commit 0998a59

Browse files
ruslotqchen
authored andcommitted
Install CMake config (#31)
1 parent bee4d1d commit 0998a59

2 files changed

Lines changed: 61 additions & 0 deletions

File tree

CMakeLists.txt

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,61 @@ set(DLPACK_MOCK_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/mock_main.cc
5656
${CMAKE_CURRENT_SOURCE_DIR}/contrib/mock_c.c)
5757
add_executable(mock ${DLPACK_MOCK_SRCS})
5858

59+
add_library(dlpack INTERFACE)
60+
add_library(${PROJECT_NAME}::dlpack ALIAS dlpack)
5961

62+
# Installation (https://github.com/forexample/package-example) {
63+
64+
# Introduce variables:
65+
# * CMAKE_INSTALL_LIBDIR
66+
# * CMAKE_INSTALL_BINDIR
67+
# * CMAKE_INSTALL_INCLUDEDIR
68+
include(GNUInstallDirs)
69+
70+
set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
71+
set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
72+
set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake")
73+
set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake")
74+
set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
75+
set(namespace "${PROJECT_NAME}::")
76+
77+
include(CMakePackageConfigHelpers)
78+
79+
# Use:
80+
# * PROJECT_VERSION
81+
write_basic_package_version_file(
82+
"${version_config}" COMPATIBILITY SameMajorVersion
83+
)
84+
85+
# Use:
86+
# * TARGETS_EXPORT_NAME
87+
# * PROJECT_NAME
88+
configure_package_config_file(
89+
"cmake/template/Config.cmake.in"
90+
"${project_config}"
91+
INSTALL_DESTINATION "${config_install_dir}"
92+
)
93+
94+
install(
95+
TARGETS dlpack
96+
EXPORT "${TARGETS_EXPORT_NAME}"
97+
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
98+
)
99+
100+
install(
101+
DIRECTORY include/
102+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
103+
)
104+
105+
install(
106+
FILES "${project_config}" "${version_config}"
107+
DESTINATION "${config_install_dir}"
108+
)
109+
110+
install(
111+
EXPORT "${TARGETS_EXPORT_NAME}"
112+
NAMESPACE "${namespace}"
113+
DESTINATION "${config_install_dir}"
114+
)
115+
116+
# }

cmake/template/Config.cmake.in

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@PACKAGE_INIT@
2+
3+
include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake")
4+
check_required_components("@PROJECT_NAME@")

0 commit comments

Comments
 (0)