2026-02-27 23:58:44 +03:00
2025-10-08 21:15:28 +03:00
2024-11-23 17:55:59 +03:00
2022-12-14 14:13:52 +03:00
2026-01-22 11:48:29 +03:00
2025-09-26 21:33:45 +03:00
2022-12-16 16:45:07 +03:00
2020-04-30 16:09:57 +03:00
2020-04-30 15:25:31 +03:00
2022-03-15 15:10:59 +03:00
2022-12-14 14:13:52 +03:00
2025-10-08 21:15:28 +03:00
2020-05-15 22:48:58 +03:00
2022-08-11 11:40:49 +03:00

Platform-Independent Primitives library

Introduction

Low-level C++ library that covers next areas:

  • Strings
  • Console IO
  • Threads
  • Timers
  • Events
  • Various IO devices
  • Mathematics (FFT with libfftw3)
  • Cryptography (libsodium)
  • Compression (zlib)
  • Resources
  • Metaprogramming

CMake

This library tightly integrated with CMake by providing some macro:

  • pip_code_model(<out_var> file0 [file1 ...] [OPTIONS opt0 [opt1 ...] ] [ABSOLUTE]) Generate code model files for source files file0 [file1 ...].

Options you can see by exec "pip_cmg -h". If not ABSOLUTE source files will be prepended by ${CMAKE_CURRENT_SOURCE_DIR}. You should add ${<out_var>} to your target.

  • pip_resources(<out_var> file)

Generate C++ files for resource file. You should add ${<out_var>} to your target.

Documentation

🇺🇸 Online documentation

🇺🇸 Qt-help

🇷🇺 Онлайн документация

🇷🇺 Qt-help

Основные опции сборки

Стандартные опции (option())

Опция Описание По умолчанию
ICU ICU support для конвертации кодовых страниц ON (кроме Win/Android/Apple)
STD_IOSTREAM Поддержка std::iostream операторов OFF
INTROSPECTION Сборка с интроспекцией OFF
TESTS Сборка тестов OFF
COVERAGE Сборка с информацией о покрытии OFF
PIP_FFTW_F Поддержка FFTW для float ON
PIP_FFTW_L Поддержка FFTW для long double ON
PIP_FFTW_Q Поддержка FFTW для quad double OFF

Опции модулей (PIP_BUILD_*)

Опция Модуль
PIP_BUILD_CONSOLE console
PIP_BUILD_CRYPT crypt (требует libsodium)
PIP_BUILD_COMPRESS compress (требует zlib)
PIP_BUILD_USB usb
PIP_BUILD_FFTW fftw
PIP_BUILD_OPENCL opencl
PIP_BUILD_IO_UTILS io_utils
PIP_BUILD_CLIENT_SERVER client_server
PIP_BUILD_CLOUD cloud
PIP_BUILD_LUA lua
PIP_BUILD_HTTP_CLIENT http_client (требует libcurl)
PIP_BUILD_HTTP_SERVER http_server (требует libmicrohttpd)

Дополнительные переменные

Переменная Описание
PIP_BUILD_DEBUG Сборка debug версии
PIP_FREERTOS Режим сборки для FreeRTOS
CROSSTOOLS Собрать инструменты кросс-сборки под хостовую систему (pip_cmg, pip_rc, ...)
LOCAL Локальная установка (bin/lib/include)
PIP_CONTAINERS_MIN_ALLOC Переопределить минимальный размер аллокации контейнеров
PIP_CONTAINERS_MAX_POT_ALLOC Переопределить максимальный размер дополнительной аллокации (поддерживает X_KiB, X_MiB)

Примеры использования

# Базовая сборка с тестами
cmake -B build -DTESTS=ON

# Сборка с покрытием и ICU
cmake -B build -DTESTS=ON -DCOVERAGE=ON -DICU=ON

# Отключение отдельных модулей
cmake -B build -DPIP_BUILD_CRYPT=OFF -DPIP_BUILD_OPENCL=OFF

# Переопределение параметров контейнеров
cmake -B build -DPIP_CONTAINERS_MIN_ALLOC=64

# Локальная установка
cmake -B build -DLOCAL=ON

PIP Dependencies

Встроенные (included in 3rd/)

Библиотека Назначение Модуль PIP
PCRE2 Регулярные выражения main (internal)
BLAKE2 Хеширование main (internal)
SipHash Хеширование main (internal)
Lua Lua scripting lua
LuaBridge Lua bindings lua

Внешние (системные)

Библиотека Опция Модуль PIP
ICU -DICU=ON main (string conversion)
zlib PIP_BUILD_COMPRESS compress
libsodium PIP_BUILD_CRYPT crypt, io_utils, cloud
libusb PIP_BUILD_USB usb
FFTW3 (+ threads) PIP_BUILD_FFTW fftw
OpenCL PIP_BUILD_OPENCL opencl
libmicrohttpd PIP_BUILD_HTTP_SERVER http_server
libcurl PIP_BUILD_HTTP_CLIENT http_client

Опциональные (тесты/документация)

Инструмент Назначение
Google Test Тестирование (fetched automatically)
Doxygen Генерация документации

Схема зависимостей модулей

main (core)
├── PCRE2 (встроен)
├── BLAKE2 (встроен)
├── SipHash (встроен)
└── ICU (опционально)

console     → main
compress    → zlib
crypt       → libsodium
usb         → libusb
fftw        → FFTW3
opencl      → OpenCL
io_utils    → [crypt, если доступен]
client_server → io_utils
cloud       → io_utils, crypt
lua         → Lua (встроен), LuaBridge (встроен)
http_server → libmicrohttpd
http_client → libcurl
Description
Platform-Independent Primitives library and utilites
Readme 42 MiB
Languages
C 51.4%
C++ 46.6%
CMake 1.3%
M4 0.6%