Как правильно собрать динамическую библиотеку из статических и стоит ли?

Ситуация: У меня есть несколько компонентов, они могут быть как в виде исходников, так и в виде уже скомпилированных статических библиотек. На выходе я хочу получить одну динамическую библиотеку, с которой уже буду работать. Сейчас пишу в Visual Studio, но планирую абстрагироваться с помощью CMake. В Visual Studio solution выглядит примерно следующим образом:
StaticLibProject1
StaticLibProject2
DynamicLibProject

Проекты связаны через References - DynamicLibProject зависит от обеих статичных библиотек.
Желанного результата в студии достиг изменив в настройках проекта у DynamicLibProject - Linker -> General -> Use Library Dependency Inputs: Yes. Вопросы - стоит ли так делать, какие могут быть последствия, как повторить тоже самое с CMake?
  • Вопрос задан
  • 204 просмотра
Решения вопроса 1
maaGames
@maaGames
Погроммирую программы
CMake всего лишь будет собирать тот же самый солюшен, который у вас уже есть. Плюс сможет собирать проекты под другие компиляторы. Если не собираетесь использовать другие компиляторы, то какой-то принципиальной пользы от CMake не будет.

Если библиотека большая и собирается дольше нескольких минут, то есть смысл собрать её в dll, чтобы потом использующие её программы не тратили время на компиляцию. Если файлов немного, можно и как исходники оставить. DLL получается привязанной к конкретной версии runtime, который использовался при её сборке. Плюс debug/release версии. Плюс при обновлении компилятора может потребоваться перекомпиляция библиотек.
Бибилиотеку, поставляемую в виде исходников, компилятор и компоновщик могут более эффективно оптимизировать.

В эпоху git и open source считается хорошим тоном поставлять исходники и CMake для построения проектов.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы