Skip to content

Commit ad7f9cc

Browse files
committed
build(cmake): add package config installation
1 parent ab42cef commit ad7f9cc

4 files changed

Lines changed: 42 additions & 8 deletions

File tree

CMakeLists.txt

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
cmake_minimum_required(VERSION 3.5)
2-
project(hmac_cpp LANGUAGES CXX)
2+
project(hmac_cpp VERSION 0.1.0 LANGUAGES CXX)
33

44
if(NOT DEFINED CMAKE_CXX_STANDARD)
55
set(CMAKE_CXX_STANDARD 11)
@@ -25,17 +25,38 @@ set(HMAC_HEADERS
2525
include/hmac_cpp/sha512.hpp
2626
)
2727

28-
add_library(hmac STATIC ${HMAC_SOURCES})
29-
target_include_directories(hmac PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
28+
add_library(hmac_cpp STATIC ${HMAC_SOURCES})
29+
target_include_directories(hmac_cpp PUBLIC
30+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
31+
$<INSTALL_INTERFACE:include>
32+
)
3033

3134
if(BUILD_EXAMPLE)
3235
add_executable(example example.cpp)
33-
target_link_libraries(example PRIVATE hmac)
36+
target_link_libraries(example PRIVATE hmac_cpp)
3437
target_include_directories(example PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
3538
endif()
3639

37-
install(TARGETS hmac DESTINATION lib)
40+
include(CMakePackageConfigHelpers)
41+
install(TARGETS hmac_cpp EXPORT hmac_cppTargets DESTINATION lib)
3842
install(FILES ${HMAC_HEADERS} DESTINATION include/hmac_cpp)
43+
install(EXPORT hmac_cppTargets NAMESPACE hmac_cpp:: DESTINATION lib/cmake/hmac_cpp)
44+
45+
configure_package_config_file(
46+
cmake/hmac_cppConfig.cmake.in
47+
"${CMAKE_CURRENT_BINARY_DIR}/hmac_cppConfig.cmake"
48+
INSTALL_DESTINATION lib/cmake/hmac_cpp
49+
)
50+
write_basic_package_version_file(
51+
"${CMAKE_CURRENT_BINARY_DIR}/hmac_cppConfigVersion.cmake"
52+
VERSION ${PROJECT_VERSION}
53+
COMPATIBILITY SameMajorVersion
54+
)
55+
install(FILES
56+
"${CMAKE_CURRENT_BINARY_DIR}/hmac_cppConfig.cmake"
57+
"${CMAKE_CURRENT_BINARY_DIR}/hmac_cppConfigVersion.cmake"
58+
DESTINATION lib/cmake/hmac_cpp
59+
)
3960

4061
if(BUILD_TESTS)
4162
enable_testing()
@@ -46,7 +67,7 @@ if(BUILD_TESTS)
4667
)
4768
FetchContent_MakeAvailable(googletest)
4869
add_executable(test_all test_all.cpp)
49-
target_link_libraries(test_all PRIVATE hmac gtest_main)
70+
target_link_libraries(test_all PRIVATE hmac_cpp gtest_main)
5071
target_include_directories(test_all PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
5172
add_test(NAME test_all COMMAND test_all)
5273
endif()

README.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,19 @@ _install/
4343
│ ├── sha1.hpp
4444
│ ├── sha256.hpp
4545
│ └── sha512.hpp
46-
└── lib/
47-
└── libhmac.a
46+
└── lib/
47+
└── libhmac_cpp.a
4848
```
4949

5050
Predefined `.bat` scripts for MinGW builds are also available: `build_*.bat`.
5151

52+
After installation, the package can be found and linked in other projects using `find_package`:
53+
54+
```cmake
55+
find_package(hmac_cpp CONFIG REQUIRED)
56+
target_link_libraries(my_app PRIVATE hmac_cpp::hmac_cpp)
57+
```
58+
5259
## 📦 MQL5 Compatibility
5360

5461
The repository includes `sha256.mqh`, `sha512.mqh`, `hmac.mqh`, and `hmac_utils.mqh` files, fully compatible with `MetaTrader 5`.

cmake/hmac_cppConfig.cmake.in

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
@PACKAGE_INIT@
2+
3+
include("${CMAKE_CURRENT_LIST_DIR}/hmac_cppTargets.cmake")
4+
5+
check_required_components(hmac_cpp)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# hmac_cppConfigVersion.cmake is generated by write_basic_package_version_file

0 commit comments

Comments
 (0)