cmake 2.8
gcc (GCC) 4.8.1
Редактировать ----------
Обертывание статических библиотек в whole-archive
работает для всех библиотек, кроме pjmedia-videodev
. Проблема в том, что когда я пытаюсь выполнить сборку, я получаю следующую ошибку.
cbar_factory_init': colorbar_dev.c:(.text+0x2a0): undefined reference to pjmedia_format_init_video'
Привет,
Я создал общую библиотеку, и мне нужно связать эту библиотеку примерно с 10 статическими библиотеками. Затем я связываю свой исполняемый файл с общей библиотекой.
Мой вопрос в том, что когда я запускаю make, он не может подключиться, так как он также хочет статические библиотеки. Цель - создать оболочку для статических библиотек. Таким образом, исполняемый файл должен связываться только с одной общей библиотекой. Поскольку я связываю общую библиотеку со статикой, статика автоматически станет частью исходного кода общей библиотеки.
Только кодируйте sippnets, чтобы сделать это коротким. В моем CMakeLists.txt, который создает общую библиотеку и связывает статические библиотеки:
add_library(app_module_sip SHARED app_module_sip_init.c)
set(PJSIP_LIBRARIES
g7221codec
gsmcodec
ilbccodec
milenage
pj
pjlib-util
pjmedia
pjmedia-codec
pjmedia-audiodev
pjmedia-videodev
pjnath
pjsip
pjsip-simple
pjsip-ua
pjsua
portaudio
resample
speex
srtp
)
target_link_libraries(app_module_sip pthread m uuid nsl rt asound crypto ssl ${PJSIP_LIBRARIES})
Теперь мой CMakeLists.txt, который делает исполняемый файл
add_executable(app sip_test.c)
target_link_libraries(app app_module_sip)
Правильно ли это то, что я здесь делаю? Я не хочу связывать исполняемый файл со статическими библиотеками. Просто единственная разделяемая библиотека, поскольку это моя оболочка, в которой я буду вызывать функции.
Это нормально, если я свяжу все статические библиотеки при создании исполняемого файла, но это не тот результат, которого я хочу.
Большое спасибо за любые предложения,