1 diff --git a/CMakeLists.txt b/CMakeLists.txt
2 index e2d7d53..6d380e9 100644
5 @@ -15,6 +15,28 @@ OPTION(CPUINFO_BUILD_UNIT_TESTS "Build cpuinfo unit tests" ON)
6 OPTION(CPUINFO_BUILD_MOCK_TESTS "Build cpuinfo mock tests" ON)
7 OPTION(CPUINFO_BUILD_BENCHMARKS "Build cpuinfo micro-benchmarks" ON)
10 +set(config_install_dir "lib/cmake/unofficial-${PROJECT_NAME}")
11 +set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
12 +set(project_config "${generated_dir}/unofficial-${PROJECT_NAME}Config.cmake")
13 +set(targets_export_name "unofficial-${PROJECT_NAME}Targets")
14 +set(namespace "unofficial::${PROJECT_NAME}::")
16 +# Include module with fuction 'write_basic_package_version_file'
17 +include(CMakePackageConfigHelpers)
18 +configure_package_config_file(
19 + "cmake/Config.cmake.in"
21 + INSTALL_DESTINATION "${config_install_dir}"
23 +install(FILES "${project_config}"
24 + DESTINATION "${config_install_dir}"
26 +install(EXPORT "${targets_export_name}"
27 + NAMESPACE "${namespace}"
28 + DESTINATION "${config_install_dir}"
32 INCLUDE(GNUInstallDirs)
34 @@ -210,7 +232,7 @@ IF(CMAKE_SYSTEM_NAME MATCHES "^(Windows|CYGWIN|MSYS)$")
35 TARGET_COMPILE_DEFINITIONS(cpuinfo_internals PRIVATE _WIN32_WINNT=0x0601)
37 SET_TARGET_PROPERTIES(cpuinfo PROPERTIES PUBLIC_HEADER include/cpuinfo.h)
38 -TARGET_INCLUDE_DIRECTORIES(cpuinfo BEFORE PUBLIC include)
39 +TARGET_INCLUDE_DIRECTORIES(cpuinfo BEFORE PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:include>)
40 TARGET_INCLUDE_DIRECTORIES(cpuinfo BEFORE PRIVATE src)
41 TARGET_INCLUDE_DIRECTORIES(cpuinfo_internals BEFORE PUBLIC include src)
42 IF(CPUINFO_LOG_LEVEL STREQUAL "default")
43 @@ -261,6 +283,7 @@ TARGET_LINK_LIBRARIES(cpuinfo PRIVATE clog)
44 TARGET_LINK_LIBRARIES(cpuinfo_internals PRIVATE clog)
46 INSTALL(TARGETS cpuinfo
47 + EXPORT "${targets_export_name}"
48 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
49 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
50 PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
51 diff --git a/cmake/Config.cmake.in b/cmake/Config.cmake.in
53 index 0000000..9b4c9ee
55 +++ b/cmake/Config.cmake.in
59 +include("${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake")
60 +check_required_components("@PROJECT_NAME@")
61 diff --git a/deps/clog/CMakeLists.txt b/deps/clog/CMakeLists.txt
62 index 083f519..43b5c78 100644
63 --- a/deps/clog/CMakeLists.txt
64 +++ b/deps/clog/CMakeLists.txt
65 @@ -57,7 +57,7 @@ SET_TARGET_PROPERTIES(clog PROPERTIES
67 CLOG_TARGET_RUNTIME_LIBRARY(clog)
68 SET_TARGET_PROPERTIES(clog PROPERTIES PUBLIC_HEADER include/clog.h)
69 -TARGET_INCLUDE_DIRECTORIES(clog BEFORE PUBLIC include)
70 +TARGET_INCLUDE_DIRECTORIES(clog PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:include>)
72 TARGET_COMPILE_DEFINITIONS(clog PRIVATE CLOG_LOG_TO_STDIO=1)
74 @@ -68,6 +68,7 @@ IF(ANDROID AND NOT CLOG_LOG_TO_STDIO)
78 + EXPORT ${targets_export_name}
79 LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
80 ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
81 PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")