ncpp (Node C++) — минималистичная системная библиотека, которая стремится предоставить простой и эффективный кроссплатформенный мультитул, вдохновленный документацией Node.js.
ncpp предлагает реализации из различных областей для стандартов C++98 и выше, такие как обработка буферов, файлов, сети, шифрования и многое другое, минимизируя внешние зависимости и сохраняя минимальный размер.
- Основа:
- Стандартные контейнеры: Array, String, Buffer, HashMap.
- Стандартные преобразования: числа <-> строки, etc.
- Система:
- Стандартный ввод/вывод (readline/print)
- Работа с файловой системой.
- Сбор информации о системе.
- Работа с процессами и потоками.
- Console: управление консолью.
- Сеть: Сокеты (TCP/UDP/Unix), HTTP клиент, TCP/HTTP сервер, ВебСокеты.
- Работа с датами и системным временем.
- Структуры и алгоритмы:
- Поддержка CBOR/JSON/BSON.
- BigInt: Целые числа произвольного размера.
- Криптография:
- Хеширование (MD5, SHA1/2/3).
- Симетричное шифрование (AES).
- Графика:
- Инициализация окон WinApi/X11.
- Инициализация контекста OpenGL.
- Обработка событий.
- Поддержка компиляторов:
- GCC/MinGW >= 3.4.2 (рекомм. >= 4.9.2)
- Clang >= 3.5.2
-
MSVC(поддержка не планируется)
- Поддержка стандарта: >= C++98
- Поддержка ОС:
- Windows XP/7/10+
- Linux >= 2.6.18 (рекомм. >= 3.10.0)
- X11
- Wayland
- FreeBSD (не планируется в ближайшем будущем)
- Android (не планируется в ближайшем будущем)
-
MacOS, iOS(поддержка не планируется)
Проект стремится к минимизации внешних зависимостей, однако для отдельных компонентов могут требоваться дополнительные пакеты:
- Windows: - (Все необходимые компоненты уже вшиты в стандартную комплектацию системы)
- Linux: Необходим
glibc/musl(Обычно включены в минимальный состав любого дистрибутива) Для работы компонентовGUI,GL,Experimentalмогут требоваться следующие пакеты:
#GUI -> X11 packages:
apt install libx11-dev libxtst-dev -y --no-install-recommends
#GL -> OpenGL packages:
apt install libgl1-mesa-dev -y --no-install-recommends
#Experimental -> Audio:
#apt install libasound2-dev -y --no-install-recommends
#Experimental -> Images: Необходимо включение реализации stb_image (Не включен в код проекта)Это основной (и пока единственный) способ, особенно если вы хотите самостоятельно выбрать уровень оптимизации при компиляции каждого вашего проекта под конкретную платформу.
Для упрощения и ускорения сборки используется Unity Build стиль, где собирается единая единица трансляции (мастер-файл) из .cpp файлов в необходимой последовательности,
что может помочь с оптимизациями, однако может потреблять больше памяти в сравнении классической модульной сборкой.
Вы можете использовать скрипт make.sh/make.bat в scripts для этих целей. (Необходимо запускать находясь в директории scripts).
По умолчанию скрипт соберет пример example.cpp в корне проекта.
Также, можете просто подключить мастер-файл #include "src/ncpp.cpp" в ваш код. Это подключит в ваш файл полную реализацию библиотеки.
(Однако, в этом случае может понадобиться вручную выставлять флаги компилятора и линковать системные библиотеки).
git clone --single-branch --branch main --depth 1 https://github.com/vlad441/ncpp.git
::Или: вы можете скачать архив: https://github.com/vlad441/ncpp/archive/refs/heads/main.zip
::Т.к Git автоматически приводит формат окончания строк к LF, при скачивании архива для make.bat может понадобиться сменить формат окончания строк на CRLF
cd ncpp/scripts
make.batgit clone --single-branch --branch main --depth 1 https://github.com/vlad441/ncpp.git
#Или: вы можете скачать архив: wget https://github.com/vlad441/ncpp/archive/refs/heads/main.zip
cd ncpp/scripts
chmod 755 make.sh
bash make.shВы можете посмотреть простой example.cpp в корне проекта.
Также вы можете посмотреть пару примеров в разделе документации.
Более подробно ознакомиться с документацией вы можете здесь.