Skip to content

Commit 209f86e

Browse files
committed
feat: add CMake config and version files for full find_package() support
1 parent 75259eb commit 209f86e

2 files changed

Lines changed: 37 additions & 18 deletions

File tree

CMakeLists.txt

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
cmake_minimum_required(VERSION 3.28)
2-
project(yandex-disk-cpp-client)
2+
project(yandex-disk-cpp-client VERSION 1.0.2)
33

44
set(CMAKE_CXX_STANDARD 17)
55
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -11,61 +11,77 @@ find_package(CURL CONFIG REQUIRED)
1111

1212
file(GLOB SOURCES "src/*.cpp")
1313

14-
add_library(yandex_disk_client STATIC ${SOURCES})
14+
add_library(yandex-disk-cpp-client STATIC ${SOURCES})
1515

16-
target_include_directories(yandex_disk_client
16+
target_include_directories(yandex-disk-cpp-client
1717
PUBLIC
1818
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
1919
$<INSTALL_INTERFACE:include>
2020
)
2121

22-
23-
target_link_libraries(yandex_disk_client
22+
target_link_libraries(yandex-disk-cpp-client
2423
PUBLIC nlohmann_json::nlohmann_json
2524
CURL::libcurl
2625
)
2726

2827
# === Build each example as a separate executable ===
2928
if(BUILD_EXAMPLES)
3029
add_executable(example_basic_usage examples/basic_usage.cpp)
31-
target_link_libraries(example_basic_usage PRIVATE yandex_disk_client)
30+
target_link_libraries(example_basic_usage PRIVATE yandex-disk-cpp-client)
3231

3332
add_executable(example_trash_management examples/trash_management.cpp)
34-
target_link_libraries(example_trash_management PRIVATE yandex_disk_client)
33+
target_link_libraries(example_trash_management PRIVATE yandex-disk-cpp-client)
3534

3635
add_executable(example_publish_unpublish examples/publish_unpublish.cpp)
37-
target_link_libraries(example_publish_unpublish PRIVATE yandex_disk_client)
36+
target_link_libraries(example_publish_unpublish PRIVATE yandex-disk-cpp-client)
3837

3938
add_executable(example_move_rename examples/move_rename.cpp)
40-
target_link_libraries(example_move_rename PRIVATE yandex_disk_client)
39+
target_link_libraries(example_move_rename PRIVATE yandex-disk-cpp-client)
4140

4241
add_executable(example_search_files examples/search_files.cpp)
43-
target_link_libraries(example_search_files PRIVATE yandex_disk_client)
42+
target_link_libraries(example_search_files PRIVATE yandex-disk-cpp-client)
4443

4544
add_executable(example_directory_upload_download examples/directory_upload_download.cpp)
46-
target_link_libraries(example_directory_upload_download PRIVATE yandex_disk_client)
45+
target_link_libraries(example_directory_upload_download PRIVATE yandex-disk-cpp-client)
4746
endif()
4847

4948
# === Installing a static library ===
5049

51-
install(TARGETS yandex_disk_client
52-
EXPORT yandex_disk_client_targets
50+
install(TARGETS yandex-disk-cpp-client
51+
EXPORT yandex-disk-cpp-client-targets
5352
ARCHIVE DESTINATION lib
5453
LIBRARY DESTINATION lib
5554
RUNTIME DESTINATION bin
5655
INCLUDES DESTINATION include
5756
)
5857

59-
# === Copying all public headlines ===
58+
# === Copying all public headers ===
6059

6160
install(DIRECTORY include/ DESTINATION include)
6261

6362
# === Exporting targets for find_package() ===
6463

65-
install(EXPORT yandex_disk_client_targets
66-
FILE yandex_disk_clientTargets.cmake
67-
NAMESPACE yandex_disk_client::
68-
DESTINATION lib/cmake/yandex_disk_client
64+
install(EXPORT yandex-disk-cpp-client-targets
65+
FILE yandex-disk-cpp-clientTargets.cmake
66+
NAMESPACE yandex-disk-cpp-client::
67+
DESTINATION lib/cmake/yandex-disk-cpp-client
6968
)
7069

70+
# === CMake package config & version files ===
7171

72+
include(CMakePackageConfigHelpers)
73+
configure_package_config_file(
74+
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/yandex-disk-cpp-clientConfig.cmake.in"
75+
"${CMAKE_CURRENT_BINARY_DIR}/yandex-disk-cpp-clientConfig.cmake"
76+
INSTALL_DESTINATION lib/cmake/yandex-disk-cpp-client
77+
)
78+
write_basic_package_version_file(
79+
"${CMAKE_CURRENT_BINARY_DIR}/yandex-disk-cpp-clientConfigVersion.cmake"
80+
VERSION ${PROJECT_VERSION}
81+
COMPATIBILITY SameMajorVersion
82+
)
83+
install(FILES
84+
"${CMAKE_CURRENT_BINARY_DIR}/yandex-disk-cpp-clientConfig.cmake"
85+
"${CMAKE_CURRENT_BINARY_DIR}/yandex-disk-cpp-clientConfigVersion.cmake"
86+
DESTINATION lib/cmake/yandex-disk-cpp-client
87+
)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@PACKAGE_INIT@
2+
3+
include("${CMAKE_CURRENT_LIST_DIR}/yandex-disk-cpp-clientTargets.cmake")

0 commit comments

Comments
 (0)