У меня очень похожая проблема с той, которая описана в списке рассылки Cmake, где у нас есть проект, зависящий от многих статических библиотек (все построенные из источника в отдельных подмодулях, каждый из которых со своими собственными cmakelists.txt, описывающими процесс сборки для каждой библиотеки), который я хотел бы объединить в одну статическую библиотеку для выпуска для потребителей. Зависимости моей библиотеки могут быть изменены, и я не хочу обременять разработчиков дальше по цепочке с этими изменениями. Окрашенное решение будет заключаться в том, чтобы объединить все LIBS в одну отдельную либерацию. Полем < /p>
Однако, как будто, если я сделаю проект MyLib подмодуль исполняемого проекта, и только ссылка против MyLib в исполняемом Cmakelists.txt в верхнем уровне. Библиотека, похоже, объединяется. Т.е. MyLib составляет 27 Мб, вместо 3 МБ, когда я устанавливаю цель только для создания MyLib < /code>. < /p>
Существуют решения, описывающие распаковку либеров в объектные файлы и рекомбинирование (и здесь, и здесь), но это кажется удивительно неуклюжим, когда Cmake кажется идеально способным автоматически объединять либера. Это там магическая команда, которую мне не хватает, или рекомендуемый элегантный способ сделать библиотеку релиза?
Подробнее здесь:
https://stackoverflow.com/questions/379 ... sing-cmake