Рекомендуемый подход к настройке конфигурации / настроек

Конечная цель состоит в том, чтобы позволить конечным пользователям / администраторам иметь возможность устанавливать параметры программы с помощью комбинации переключателей CLI (т.е. "--foo=31 --bar=0") и / или конфигурационный файл (ы) (т.е. cat /etc/blah.conf -> "foo=31\nbar=0\n"). Рассматриваемый язык — c ++, хотя многие из них не имеют большого значения. Цель — GNU / Linux для чего угодно, от ARMv6 (Raspberry Pi) до x86_64.

Существует два очевидных решения: написание парсеров argc / v и conf с использованием стандартных функций библиотеки; ИЛИ ЖЕ, используя существующую библиотеку, как libconfig. Моя предыдущая практика заключалась в том, чтобы всегда использовать библиотеки, а не изобретать велосипеды; но я впервые нацелился на встраиваемые платформы. Это заставляет меня задуматься о том, перевешивает ли трата и риск ошибок, связанных с написанием этого кода, преимущество меньшего количества зависимостей и, возможно, меньшего размера кода.

Тогда возникает вопрос: что делать? И есть ли практические правила, которые следует использовать при оценке выбора между библиотекой и собственной версией для многоплатформенного кода?

0

Решение

Я понимаю вашу боль: время разработки / удобство против следа.
Лично я твердо верю, что использование существующих пакетов всегда выгодно, если вы выбираете активно поддерживаемые пакеты.
Libconfig, кажется, не так активен, что в моей книге все еще является приемлемым состоянием для зрелого пакета.

Для встроенного Linux, в отношении занимаемой площади, вы должны подумать о более широкой картине. Является ли ваше приложение единственным, кому нужен libconfig? Нужны ли другим приложениям в rootfs такие вещи, как libxml? В таком случае — используйте libxml. Поэтому проверьте ваши rootfs на наличие похожих библиотек.

Во-вторых, вы говорите о ок. 150 КБ дискового пространства. Действительно ли стоит пережить все неприятности? Существует значительное количество пакетов, превышающих это, поэтому возможность убрать другой пакет из вашего списка может быть лучшим способом потратить ваши усилия.
Не беспокойтесь об использовании оперативной памяти — это будет еще меньше. Linux будет загружать код и страницы данных только с диска, когда они используются.

1

Другие решения


По вопросам рекламы [email protected]