Я собираюсь загрузить проект, над которым я работал в Sourceforge под GPL, и надеялся получить некоторые советы о том, как организовать код таким образом, который легко понять и использовать разработчиками, которые может смотреть на него, что хорошо работает с git, и то, как Sourceforge представляет вещи.
Мои проекты - это кросс-платформенное приложение на С++ и состоит из следующих элементов:
- Часть библиотеки, которая выполняет фактическую работу
- Отдельная часть GUI, которая использует часть библиотеки
- Библиотеки с открытым исходным кодом, чьи включенные пути необходимы для компиляции библиотеки
- Измененные библиотеки с открытым исходным кодом, которые были изменены, и, следовательно, в некотором смысле являются непосредственной частью этого проекта, а также
- Скомпилированный вывод всех библиотек
Какой лучший способ организовать это?
Работая над ним сам, из корня проекта я имею это вот так:
/LibPortion
/GuiPortion
/libs/ библиотеки с открытым исходным кодом
/libs/ измененные библиотеки с открытым исходным кодом
/libs/compiled/ для хранения скомпилированных библиотек, в том числе при компиляции для Windows некоторых, которые не принадлежат к библиотекам с открытым исходным кодом, таким как файлы библиотеки Cygwin
Это разумный способ организовать вещи? Соответствует ли это соглашениям и ожиданиям?
При проверке моего проекта имеет смысл проверить библиотеки с открытым исходным кодом, а также часть проекта? Я полагаю, что имеет смысл сделать это, потому что это сводит к минимуму трение с тем, чтобы проект был настроен и запущен для нового разработчика. Конечно, я должен, по крайней мере, проверять измененные библиотеки с открытым исходным кодом.
Кроме того, что имеет смысл включать в репозиторий в скомпилированных библиотеках? Я думаю, было бы лучше сказать git игнорировать этот каталог и оставить его пустым, так как его содержимое будет различным для каждой цели сборки, так как мой проект является кросс-платформенным.
Тем не менее, это также кажется очень приятным для людей, которые не хотят хлопотать со строительством и/или загрузкой всех самих библиотек, чтобы предлагать библиотеки, предварительно скомпилированные для основных платформ. Какой самый умный способ поделиться ими? Я смотрю на Sourceforge, и мне нелегко понять, как я должен делиться ими, если не как часть моего репозитория git.