Этот документ является руководством для разработчиков, желающих внести свой вклад в проект ImHex любым способом. Он содержит информацию о базе кода, процессе сборки и общем рабочем процессе.
Если вы хотите добавить новые функции, лучшим способом начать является присоединение к нашему Discord-каналу и сообщение нам о вашей идее. Мы можем тогда обсудить лучший способ реализации этой идеи и её интеграцию в ImHex или если она должна быть выполнена в отдельном плагине.
Существуют шаблоны для самостоятельных плагинов, использующих ImHex как субмодуль. Вы можете найти их здесь:
Если вы хотите поддержать новый язык в ImHex, лучшим способом будет использование инструмента dist/langtool.py
. Этот инструмент создаст необходимый файл для вас и поможет заполнить его.
Сначала запустите инструмент командой python3 dist/langtool.py create plugins/builtin/romfs/lang <iso_code>
, где <iso_code>
— это код языка по стандарту ISO 639-1. Это создаст новый файл в директории языков.
После этого следуйте указаниям программы для заполнения всего файла. Как только вы закончите, перезапустите cmake и пересоберите ImHex. Ваш язык теперь должен быть доступен в настройках.### Обновление существующего языка
Если вы хотите добавить недостающие ключи к уже существующему языку, вы также можете использовать инструмент dist/langtool.py
. Запустите его командой python3 dist/langtool.py translate plugins/builtin/romfs/lang <iso_code>
, где <iso_code>
— это код языка по стандарту ISO 639-1.
Это последовательно перечислит все недостающие переводные ключи, присутствующие в файле по умолчанию, и вы сможете заполнить их правильными переводами на вашем языке.
ImHex написан на C++ и обычно использует последние возможности компилятора и стандартной библиотеки, доступные в gcc на всех поддерживаемых ОСах. На момент написания этого документа используется C++20.### Структура
main
: Содержит основной код приложения
- Важно понять, что основное приложение ImHex представляет собой пустую оболочку.
- Все, что делает это приложение, — это создание окна и контекста OpenGL с помощью GLFW, загрузка всех доступных плагинов, правильная конфигурация ImGui и отрисовка его на экране.
- Все остальное выполняется внутри плагинов. ImHex включает несколько плагинов по умолчанию, наиболее значимым из которых является плагин builtin
, содержащий большую часть кода приложения.
- В большинстве случаев этот код не требует модификаций. Большинство функций должны быть самодостаточными внутри плагина.
lib
libimhex
: Содержит все вспомогательные утилиты, а также различные API для взаимодействия плагинов с ImHex.
main
: Содержит основной код приложения
- Важно понять, что основное приложение ImHex представляет собой пустую оболочку.
- Все, что делает это приложение, — это создание окна и контекста OpenGL с помощью GLFW, загрузка всех доступных плагинов, правильная конфигурация ImGui и отрисовка его на экране.
- Все остальное выполняется внутри плагинов. ImHex включает несколько плагинов по умолчанию, наиболее значимым из которых является плагин builtin
, содержащий большую часть кода приложения.
- В большинстве случаев этот код не требует модификаций. Большинство функций должны быть самодостаточными внутри плагина.
接下来是第二部分:
lib
libimhex
: Содержит все вспомогательные утилиты, а также различные API для взаимодействия плагинов с ImHex.
接下来是最后一部分:
- Даже если плагин `builtin` фактически всегда доступен, он всё равно является плагином и следует относиться к нему как таковому.
这样就完成了整个文档的翻译,并且保持了原始格式和结构。 - Все важные API находятся в каталоге включений hex/api
и документируются в соответствующих заголовочных файлах.
- external
: Все библиотеки, которым необходимы специальные исправления или которые обычно недоступны через менеджеры пакетов, помещаются здесь.
- Если вы хотите добавить новые возможности к языку шаблонов, пожалуйста, отправьте pull request на https://github.com/WerWolv/PatternLanguage. Обычно ImHex зависит от последнего коммита главной ветки этого репозитория.
plugins
builtin
: Встроенный плагин. Содержит большую часть кода приложения.
tests
: Содержит все юнит-тесты для ImHex. Эти тесты автоматически запускаются CI и должны быть актуальными, особенно когда добавляются новые вспомогательные функции к libimhex. ### RomFSImHex использует специальную библиотеку под названием libromfs. Это простая статическая библиотека, которая использует функцию генерации кода в CMake для встраивания файлов в двоичный файл во время компиляции, чтобы они могли использоваться в процессе выполнения.
Все плагины содержат папку romfs
, которая включает все файлы, которые должны быть встроены в двоичный файл. Ресурсы, которые требуются для встраивания в основное приложение (обычно это не обязательно), помещаются в папку resources/romfs
.
При добавлении, изменении или удалении файлов убедитесь, что вы снова запустите CMake для обновления сгенерированного кода. В противном случае изменения могут не отразиться в двоичном файле.Персонально я использую CLion для разработки, так как это делает настройку и сборку проекта очень удобной на всех платформах.
dist/get_deps_msys2.sh
для установки всех зависимостей.dist/get_deps_*.sh
, зависящего от вашей дистрибутивной системы, либо установите их вручную с помощью вашего менеджера пакетов.dist/Brewfile
.Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )