Объединение нескольких статических библиотек в одну с использованием CmakeC++

Программы на C++. Форум разработчиков
Anonymous
Объединение нескольких статических библиотек в одну с использованием Cmake

Сообщение Anonymous »

У меня очень похожая проблема с той, которая описана в списке рассылки Cmake, где у нас есть проект, зависящий от многих статических библиотек (все построенные из источника в отдельных подмодулях, каждый из которых со своими собственными cmakelists.txt, описывающими процесс сборки для каждой библиотеки), который я хотел бы объединить в одну статическую библиотеку для выпуска для потребителей. Зависимости моей библиотеки могут быть изменены, и я не хочу обременять разработчиков дальше по цепочке с этими изменениями. Окрашенное решение будет заключаться в том, чтобы объединить все LIBS в одну отдельную либерацию. Полем < /p>

Код: Выделить всё

target_link_libraries(mylib a b c d)
Однако, как будто, если я сделаю проект MyLib подмодуль исполняемого проекта, и только ссылка против MyLib в исполняемом Cmakelists.txt в верхнем уровне. Библиотека, похоже, объединяется. Т.е. MyLib составляет 27 Мб, вместо 3 МБ, когда я устанавливаю цель только для создания MyLib < /code>. < /p>

Существуют решения, описывающие распаковку либеров в объектные файлы и рекомбинирование (и здесь, и здесь), но это кажется удивительно неуклюжим, когда Cmake кажется идеально способным автоматически объединять либера. Это там магическая команда, которую мне не хватает, или рекомендуемый элегантный способ сделать библиотеку релиза?

Подробнее здесь: https://stackoverflow.com/questions/379 ... sing-cmake

Вернуться в «C++»