mirror of
https://github.com/slendidev/smath.git
synced 2025-12-14 13:19:51 +02:00
@@ -67,6 +67,9 @@ endif()
|
|||||||
if(BUILD_TESTS)
|
if(BUILD_TESTS)
|
||||||
enable_testing()
|
enable_testing()
|
||||||
|
|
||||||
|
find_package(GTest QUIET)
|
||||||
|
|
||||||
|
if(NOT GTest_FOUND)
|
||||||
include(FetchContent)
|
include(FetchContent)
|
||||||
FetchContent_Declare(
|
FetchContent_Declare(
|
||||||
googletest
|
googletest
|
||||||
@@ -74,6 +77,7 @@ if(BUILD_TESTS)
|
|||||||
)
|
)
|
||||||
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
|
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
|
||||||
FetchContent_MakeAvailable(googletest)
|
FetchContent_MakeAvailable(googletest)
|
||||||
|
endif()
|
||||||
|
|
||||||
file(GLOB TEST_SOURCES "${CMAKE_SOURCE_DIR}/tests/*.cpp")
|
file(GLOB TEST_SOURCES "${CMAKE_SOURCE_DIR}/tests/*.cpp")
|
||||||
|
|
||||||
@@ -86,3 +90,4 @@ if(BUILD_TESTS)
|
|||||||
include(GoogleTest)
|
include(GoogleTest)
|
||||||
gtest_discover_tests(smath_tests)
|
gtest_discover_tests(smath_tests)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
17
README.md
17
README.md
@@ -1,4 +1,19 @@
|
|||||||
# smath
|
# smath
|
||||||
|
|
||||||
Single-file linear algebra math library for C++23.
|
Single-file, header-only linear algebra math library for C++23.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- Generic `Vec<N, T>` class with useful aliases `Vec2/Vec3/Vec4` and friendly accessors (`x/y/z/w`, `r/g/b/a`). They support approx-equal and tuple/structured bindings.
|
||||||
|
- `std::format` support.
|
||||||
|
- Compile-time swizzles via `swizzle<"...">`.
|
||||||
|
- Generic matrix `Mat` class with useful aliases `Mat2/Mat3/Mat4`.
|
||||||
|
- `Quaternion<T>` built on `Vec4`.
|
||||||
|
- Angle helpers `rad/deg/turns` respecting a configurable base unit via the macro `SMATH_ANGLE_UNIT`.
|
||||||
|
- Optional implicit conversions.
|
||||||
|
- Packing utilities for normalized RGBA (`pack_unorm4x8`, `unpack_snorm4x8`, etc.).
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This library is licensed under the Apache License 2.0. See the (LICENSE.txt)[LICENSE.txt] file for more details.
|
||||||
|
|
||||||
|
|||||||
15
flake.nix
15
flake.nix
@@ -36,7 +36,11 @@
|
|||||||
|
|
||||||
src = ./.;
|
src = ./.;
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgs.copyPkgconfigItems ];
|
nativeBuildInputs = with pkgs; [
|
||||||
|
cmake
|
||||||
|
gtest
|
||||||
|
copyPkgconfigItems
|
||||||
|
];
|
||||||
|
|
||||||
pkgconfigItems = [
|
pkgconfigItems = [
|
||||||
(pkgs.makePkgconfigItem rec {
|
(pkgs.makePkgconfigItem rec {
|
||||||
@@ -51,17 +55,18 @@
|
|||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
dontBuild = true;
|
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
runHook preInstall
|
runHook preInstall
|
||||||
mkdir -p $out/include
|
mkdir -p $out/include
|
||||||
cp include/*.hpp $out/include/
|
cp ../include/smath.hpp $out/include/
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
dontBuild = false;
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
meta = with pkgs.lib; {
|
meta = with pkgs.lib; {
|
||||||
description = desc;
|
description = "Single-file linear algebra math library for C++23.";
|
||||||
homepage = "https://github.com/slendidev/smath";
|
homepage = "https://github.com/slendidev/smath";
|
||||||
license = licenses.asl20;
|
license = licenses.asl20;
|
||||||
platforms = platforms.all;
|
platforms = platforms.all;
|
||||||
|
|||||||
Reference in New Issue
Block a user