Предполагается, что вы создаете статическую библиотеку:
Вы получаете неразрешенные символы, поскольку зависимости в статических библиотеках не разрешаются при их создании. Только когда вы связываете статическую библиотеку с исполняемой или разделяемой библиотекой, компоновщик на самом деле пытается разрешить необходимые символы (и в вашем случае произойдет сбой).
Так что вам нужно объединить ваши статические библиотеки в одну (как вы уже узнали).
Вы должны следовать подходу объединения add_custom_command
и add_custom_target
, который изложен в ответах, с которыми вы связаны (https://stackoverflow.com/a/32888999/1228449).
Затем используйте INSTALL( FILES ....)
, чтобы добавить объединенную библиотеку к командам установки, например ::
.
include(GNUInstallDirs)
INSTALL( FILES ${LIBNAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} )
EDIT:
Или создайте общую библиотеку.
ADD_LIBRARY( mylibrary SHARED ...)
Затем требуемые символы используемых статических библиотек разрешаются во время соединения вашей библиотеки. Кроме того, только символы, которые фактически использует ваша библиотека, интегрированы в вашу библиотеку (тогда как статическая библиотека будет содержать все).