Есть ли программы для обновления файлов в нескольких проектах?
Есть несколько библиотек, которые время от времени увеличивают функционал. Они находятся в своих папках. Есть много проектов, которые используют данные библиотеки, и данные библиотеки в них копиями помещены. Есть ли какой-нибудь стандартный способ, чтобы обновить в проектах библиотеки, а не делать вручную.
Например, есть библиотека MathLibrary, где находятся файлы math.cpp и math.h. И есть несколько проектов, где данная библиотека используется: Project1, Project2 и так далее. И в каждом проекте есть библиотека MathLibrary в виде файлов math.cpp и math.h.
И вдруг библиотека MathLibrary дописалась и стала более функциональней. И хотелось бы, чтобы во всех проектах библиотека обновилась. Как быть?
Я не знаю как это делается, но всё же рискну предположить. Есть ли возможно не использовать сам файл math.cpp а напрмер ссылку на него (или ярлык, не знаю как точно это назвать). И тогда достаточно обновить только один файл, и все ярлыки тоже обновятся.
Для плюсов не будет нормальных пакетных менеджеров пока не утвердят clang.llvm.org/docs/Modules.html и не реализуют данную фичу во всех популярных компиляторах.
Это если будет С++ проект. А есть что-то подобное в любых файлов? Какой-то внешний инструментарий, который бы обновлял все файлы из одного проекта? Текстовые рисунки, картинки, pdf документ и др.
Александр Таратин: Git хорош для одного проекта, он позволяет сливать разные билды и так далее. А вот как сделать в нем чтобы определенные файлы из одного проекта попали во все папки других проектов - не знаю возможно ли это в Git.
В общем, как понимаю, известного инструмента для решения этой проблемы нет. Спасибо)
Хорошим способом считается использовать систему контроля версий, например git или mercurial.
Библиотеку хранить в субрепозитории, который ссылается на репозиторий библиотеки на сервере
Менее удачный способ - в Makefile каждого проекта добавить цель проверки наличия обновления библиотеки при каждой сборке.
Еще менее удачный - хранить библиотеку на сетевом диске, например NFS или SMB.