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) |
Примеры использования
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 |
Генерация документации |
Схема зависимостей модулей