From 2f092d1e701a8ff9dd82f9e22a7a4bdeb0e42dcb Mon Sep 17 00:00:00 2001 From: Aster Seker Date: Sat, 6 Sep 2025 00:03:38 +0300 Subject: [PATCH] chore(test): clarify run script Add comment describing the test runner. --- CMakeLists.txt | 30 ++++++++++++++++++++---------- README-RU.md | 7 +++++-- README.md | 9 ++++++--- build_lib_mingw.bat | 2 +- scripts/run_tests.sh | 3 ++- 5 files changed, 34 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 64bd9cd..89c5303 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,9 @@ cmake_minimum_required(VERSION 3.5) project(hmac_cpp VERSION 0.2.0 LANGUAGES CXX) -if(NOT DEFINED CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 11) -endif() -set(CMAKE_CXX_STANDARD_REQUIRED ON) - -option(BUILD_EXAMPLE "Build the example program" ON) -option(BUILD_TESTS "Build the test suite" OFF) +option(HMACCPP_BUILD_EXAMPLES "Build the example program" OFF) +option(HMACCPP_BUILD_TESTS "Build the test suite" OFF) +option(HMACCPP_BUILD_BENCH "Build benchmarks" OFF) set(HMAC_SOURCES src/sha1.cpp @@ -27,12 +23,17 @@ set(HMAC_HEADERS ) add_library(hmac_cpp STATIC ${HMAC_SOURCES}) +target_compile_features(hmac_cpp PUBLIC cxx_std_11) target_include_directories(hmac_cpp PUBLIC $ $ ) -if(BUILD_EXAMPLE) +if(NOT TARGET hmac_cpp::hmac_cpp) + add_library(hmac_cpp::hmac_cpp ALIAS hmac_cpp) +endif() + +if(HMACCPP_BUILD_EXAMPLES) add_executable(example example.cpp) target_link_libraries(example PRIVATE hmac_cpp) target_include_directories(example PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include) @@ -41,7 +42,11 @@ endif() include(CMakePackageConfigHelpers) install(TARGETS hmac_cpp EXPORT hmac_cppTargets DESTINATION lib) install(FILES ${HMAC_HEADERS} DESTINATION include/hmac_cpp) -install(EXPORT hmac_cppTargets NAMESPACE hmac_cpp:: DESTINATION lib/cmake/hmac_cpp) +install(EXPORT hmac_cppTargets + FILE hmac_cppTargets.cmake + NAMESPACE hmac_cpp:: + DESTINATION lib/cmake/hmac_cpp +) configure_package_config_file( cmake/hmac_cppConfig.cmake.in @@ -59,7 +64,7 @@ install(FILES DESTINATION lib/cmake/hmac_cpp ) -if(BUILD_TESTS) +if(HMACCPP_BUILD_TESTS) enable_testing() include(FetchContent) FetchContent_Declare( @@ -80,3 +85,8 @@ if(BUILD_TESTS) target_include_directories(test_totp PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include) add_test(NAME test_totp COMMAND test_totp) endif() + +export(EXPORT hmac_cppTargets + FILE "${CMAKE_CURRENT_BINARY_DIR}/hmac_cppTargets.cmake" + NAMESPACE hmac_cpp:: +) diff --git a/README-RU.md b/README-RU.md index ad35559..d9c7cb3 100644 --- a/README-RU.md +++ b/README-RU.md @@ -22,10 +22,13 @@ ## πŸ”§ Установка ΠΈ сборка +По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, тСсты ΠΈ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈ Π½Π΅ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ +`HMACCPP_BUILD_EXAMPLES`, `HMACCPP_BUILD_TESTS` ΠΈ `HMACCPP_BUILD_BENCH`. + Для сборки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ CMake: ```bash -cmake -B build -DBUILD_EXAMPLE=ON +cmake -B build -DHMACCPP_BUILD_EXAMPLES=ON cmake --build build ``` @@ -237,7 +240,7 @@ try { ## πŸ“„ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ -ΠŸΡ€ΠΈΠΌΠ΅Ρ€ находится Π² `example.cpp`, автоматичСски собираСтся ΠΏΡ€ΠΈ `BUILD_EXAMPLE=ON`. +ΠŸΡ€ΠΈΠΌΠ΅Ρ€ находится Π² `example.cpp` ΠΈ собираСтся ΠΏΡ€ΠΈ `HMACCPP_BUILD_EXAMPLES=ON`. ```cpp #include diff --git a/README.md b/README.md index 016bf49..9040ab1 100644 --- a/README.md +++ b/README.md @@ -22,10 +22,13 @@ A lightweight `C++11` library for computing `HMAC` (hash-based message authentic ## πŸ”§ Build and Installation +Examples, tests, and benchmarks are disabled by default. Enable them with +`HMACCPP_BUILD_EXAMPLES`, `HMACCPP_BUILD_TESTS`, and `HMACCPP_BUILD_BENCH`. + Use CMake to build: ```bash -cmake -B build -DBUILD_EXAMPLE=ON +cmake -B build -DHMACCPP_BUILD_EXAMPLES=ON cmake --build build ``` @@ -63,7 +66,7 @@ target_link_libraries(my_app PRIVATE hmac_cpp::hmac_cpp) Enable tests during configuration and run them with CTest: ```bash -cmake -B build -DBUILD_TESTS=ON +cmake -B build -DHMACCPP_BUILD_TESTS=ON cmake --build build cd build ctest --output-on-failure @@ -277,7 +280,7 @@ This is useful for stateless authentication, API protection, and one-time tokens ## πŸ“„ Example -The example is in `example.cpp` and is built automatically when `BUILD_EXAMPLE=ON`. +The example is in `example.cpp` and builds when `HMACCPP_BUILD_EXAMPLES=ON`. ```cpp #include diff --git a/build_lib_mingw.bat b/build_lib_mingw.bat index ff0a3db..b4bbaba 100644 --- a/build_lib_mingw.bat +++ b/build_lib_mingw.bat @@ -1,3 +1,3 @@ -cmake -G "MinGW Makefiles" -B build -DBUILD_EXAMPLE=OFF +cmake -G "MinGW Makefiles" -B build -DHMACCPP_BUILD_EXAMPLES=OFF cmake --build build pause diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index fffb9c9..b93d92b 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash set -e -cmake -S . -B build -DBUILD_TESTS=ON -DCMAKE_CXX_STANDARD=${CXX_STANDARD:-11} +# Configure and run tests +cmake -S . -B build -DHMACCPP_BUILD_TESTS=ON cmake --build build --target test_all test_totp cd build ctest --output-on-failure