Я автор библиотеки C++, которая распространяется в составе нескольких дистрибутивов Linux. Библиотека включает заголовки и исходный код; Пакеты Linux распространяют его как заголовки + общая библиотека (.so).
Я ищу рекомендации, которые облегчили бы жизнь специалистам по сопровождению пакетов Linux.
Вещи, которые меня интересуют, включают:
Совместимость с API (например, изменение сигнатур функций). Очевидно, что поддержание совместимости между второстепенными выпусками имеет решающее значение. А как насчет основных изменений версии?
Двоичная совместимость (например, изменение размеров внешне видимых структур данных). Насколько важно быть совместимым с ABI во всех второстепенных выпусках? Есть ли проблемы со взломом в основных релизах?
Рекомендации по созданию версий. В настоящее время я использую CMake - какие-либо конкретные настройки, которые я должен установить, чтобы максимизировать вероятность того, что сопровождающие пакетов смогут просто использовать мой CMakeLists.txt?
Если есть что-то еще, чего мне не хватает, я тоже был бы рад услышать об этом.