Предложения о том, как создать библиотеку, которая может использоваться во многих моих приложениях

#c #c

#c #c

Вопрос:

В прошлом я создавал файл jar, который содержал множество «вспомогательных функций«, которые я использовал и сделал общими для многих разных приложений. Я чувствовал, что это важно, поскольку всякий раз, когда я использовал свой «вспомогательный» jar-файл в любых новых приложениях или при внесении изменений в любые существующие, всегда использовалась последняя и самая актуальная версия моего «вспомогательного» jar. Он был разработан отдельно и имел собственный контроль версий.

Я хочу сделать что-то подобное с C / C

На данный момент у меня есть коллекция заголовков, которая делает что-то похожее на мой «вспомогательный» jar на java, но считает его громоздким для управления изменениями, обеспечивая использование самых современных коллекций. Так, например, если я внес некоторые изменения в эти «вспомогательные» заголовки, мне нужно скопировать их в каждый проект и перестроить.

Если мы возьмем приведенное ниже в качестве примера того, что я делаю на Java;

введите описание изображения здесь

и ниже приведена структура, с которой я хотел бы сделать что-то подобное в C ;

введите описание изображения здесь

Я хотел бы каким-то образом разделить my_includes, чтобы любые изменения, которые я внес в my_includes, автоматически включались в любые существующие или новые приложения, в утилиты way.jar находится в приведенном выше примере Java

Я согласен с тем, что я не могу создать библиотеку или такую, поскольку тогда она не будет переносимой, верно?

Я подозреваю, что мне не хватает чего-то совершенно очевидного, просто не для меня.

Все полезные комментарии оценены, заранее спасибо…

Комментарии:

1. Просто передайте путь включения, хранящийся вне вашего проекта, в настройках компилятора?

2. Вы не упускаете ничего очевидного — эту ситуацию гораздо сложнее аккуратно обработать на C, чем на Java. Java JAR, как правило, автономны, но библиотеки C обычно требуют сочетания двоичных файлов и исходных заголовков. Поддержание их координации при наличии нескольких версий требует высокой систематичности. Если есть хороший, автоматизированный способ сделать это, я бы тоже хотел узнать об этом.

Ответ №1:

Сначала вы могли бы создать библиотеку из своего utilitis.cpp и все включают файлы независимо и добавляют эту библиотеку в любой проект. Я просто предоставляю URL для примера создания статической и общей библиотеки.

Создание статической и разделяемой библиотеки (GCC)

И затем вы можете добавлять пользовательские включаемые файлы в любой проект на c , просто нужно добавить определенные каталоги в свой путь включения во время компиляции на вашей платформе или, если вы используете cmake, вы можете отредактировать «include_directories». А также вы должны связать созданную библиотеку с вашим проектом, как описано в предоставленном URL.