Объединение нескольких статических библиотек в одну с использованием 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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