1
1
cmake_minimum_required (VERSION 3.10)
2
2
project (HFHub CXX)
3
3
4
+ # Set C++ standard
5
+ set (CMAKE_CXX_STANDARD 17)
6
+
4
7
# Find CURL package
5
8
find_package (CURL REQUIRED)
9
+ if (NOT CURL_FOUND)
10
+ message (FATAL_ERROR "CURL not found! Please install libcurl-dev." )
11
+ endif ()
6
12
7
13
# Define the hfhub static library and link it to CURL
8
14
add_library (hfhub STATIC src/huggingface_hub.cpp)
9
15
10
16
# Ensure CURL is available for consumers
11
17
target_include_directories (hfhub PUBLIC
12
18
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
13
- $<INSTALL_INTERFACE:include >
19
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >
14
20
${CURL_INCLUDE_DIRS}
15
21
)
22
+
23
+ target_compile_definitions (hfhub PRIVATE CURL_STATICLIB)
16
24
target_link_libraries (hfhub PUBLIC CURL::libcurl)
17
25
26
+ # Include GNU Install directories for portability
27
+ include (GNUInstallDirs)
28
+
18
29
# Export target
19
30
install (TARGETS hfhub
20
31
EXPORT hfhubTargets
21
- ARCHIVE DESTINATION lib
22
- LIBRARY DESTINATION lib
23
- RUNTIME DESTINATION bin
32
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
33
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
34
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
24
35
)
25
- install (DIRECTORY include / DESTINATION include )
36
+ install (DIRECTORY include / DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
26
37
27
38
# Generate a CMake config file for hfhub
28
39
include (CMakePackageConfigHelpers)
@@ -35,21 +46,29 @@ write_basic_package_version_file(
35
46
install (EXPORT hfhubTargets
36
47
FILE hfhubTargets.cmake
37
48
NAMESPACE hfhub::
38
- DESTINATION lib /cmake/hfhub
49
+ DESTINATION ${CMAKE_INSTALL_DATADIR} /cmake/hfhub
39
50
)
40
51
41
52
configure_package_config_file(
42
53
"${CMAKE_CURRENT_SOURCE_DIR} /cmake/hfhubConfig.cmake.in"
43
54
"${CMAKE_CURRENT_BINARY_DIR} /hfhubConfig.cmake"
44
- INSTALL_DESTINATION lib /cmake/hfhub
55
+ INSTALL_DESTINATION ${CMAKE_INSTALL_DATADIR} /cmake/hfhub
45
56
)
46
57
47
58
install (FILES
48
59
"${CMAKE_CURRENT_BINARY_DIR} /hfhubConfig.cmake"
49
60
"${CMAKE_CURRENT_BINARY_DIR} /hfhubConfigVersion.cmake"
50
- DESTINATION lib /cmake/hfhub
61
+ DESTINATION ${CMAKE_INSTALL_DATADIR} /cmake/hfhub
51
62
)
52
63
64
+ # Define the demo executable
53
65
add_executable (hfhub_demo src/main.cpp)
66
+
67
+ # Link demo to hfhub
54
68
target_link_libraries (hfhub_demo hfhub)
55
- install (TARGETS hfhub_demo DESTINATION bin)
69
+
70
+ # Ensure hfhub_demo has necessary includes
71
+ target_include_directories (hfhub_demo PRIVATE include )
72
+
73
+ # Install the demo executable
74
+ install (TARGETS hfhub_demo DESTINATION ${CMAKE_INSTALL_BINDIR} )
0 commit comments