Kerbal

Kerbal

language English

Static Badge Codacy grade Vcpkg Version License

GitHub code size in bytes GitHub test code size in bytes

GitHub last commit GitHub commit activity GitHub commit activity GitHub commit activity

C++ 模板库, 具有:

1) 更多基础功能, 2) 新版本标准库移植至老版本, 3) 还有更多的 constexpr!

安装说明

I) 通过 Vcpkg 安装

必须有 Vcpkg 环境, 详见: Vcpkg

vcpkg install kerbal

II) 通过源码安装

1) 克隆仓库

git clone https://github.com/WentsingNee/Kerbal.git
cd Kerbal

2) 克隆 git 子模块仓库 (如果你需要的话)

git submodule init
git submodule update

3) 通过 CMake 配置

mkdir build
cmake -S . -B build/ \
    -DCMAKE_BUILD_TYPE=Release

    # 以下参数是可选的

    # 安装 Kerbal 的目录前缀
    -DCMAKE_INSTALL_PREFIX=`你想要的目录前缀`
    # 默认会被设置为你的系统目录

    # cpack 阶段要启用的包生成器
    -DCPACK_GENERATOR=`你想要的包生成器`
    # 默认设为: "DEB;STGZ;TGZ;ZIP"

    # 是否要安装 pretty printer 文件
    # git `pretty_printer` 子模块必须已存在
    -DKERBAL_INSTALL_PRETTY_PRINTER=True # 或者是 False
    # 默认值是根据 git `pretty_printer` 子模块是否已存在决定的

4) 安装

cd build
cmake --build . --target install

执行完毕后, Kerbal 就会被安装进 CMAKE_INSTALL_PREFIX 目录中

5) 生成安装包 (如果你需要的话)

cd build
cpack .

将 Kerbal 集成进你的 CMake 项目

find_package(Kerbal REQUIRED)
target_link_libraries(
        your-target PRIVATE
        Kerbal::kerbal
        [Kerbal::kerbal-omp] # 当你使用到 Kerbal::omp 模块时, 这行可能是需要的
)

子库

简介
algorithm 算法
any std::any 相像但是支持 C++98 和 C++20 constexpr
assign 在 C++98 中像 C++11 中的 std::initializer_list一样初始化容器
autonm 自治容器, 与侵入式容器一样支持灵活的分配/解分配,但是对类型没有侵入性
bitset static_bitset (与 std::bitset 但是有更多功能和 constexpr 支持)
compare 比较器和序列比较
compatibility 为兼容性提供的宏
config 架构, 编译器, 系统平台, 标准库环境检测
container array, vector, static_vector, list, forward_list, priority_queue
function function, function_traits, invoke, invoke_r
hash 哈希支持
iterator 迭代器支持
macro 宏设施
memory 内存管理支持, 如 allocator, 未初始化算法
numeric 数值算法
ompalgo openMP 加速的算法
openmp openMP 设施和环境检测
operators 使用 CRTP 简化运算符重载
optional std::optional 相像但是支持 C++98
random 随机数生成器和分布
test 单元测试
tmp 模板元编程设施
type_traits 与 C++11 <type_traits> 相像, 但是部分支持 C++98
utility compressed_pair, tuple

文档

鸣谢

ThinkSpirit Laboratory of Nanjing University of Information Science and Technology