Как смешать связывание статических и общих библиотек с CMake - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть общая библиотека libtest.so, построенная на Linux. Это ссылки на несколько общих библиотек. Теперь у меня есть сторонние статические библиотеки для ссылки на libtest.so. Я знаю, что это возможно, вызвав gcc напрямую:

Могу ли я смешивать статические библиотеки и библиотеки общих объектов при компоновке?

Мой вопрос: как сделать то же самое? с CMake?

1 Ответ

0 голосов
/ 06 ноября 2019

Я не вижу проблемы. Со своей статической библиотекой вы можете сделать это:

target_link_libraries(my_target_or_executable /home/me/somedir/mymagiclib.a)

Или

target_link_libraries(my_target_or_executable -L/home/me/somedir/)
target_link_libraries(my_target_or_executable mymagiclib.a)

Я даже вчера связался с общими библиотеками таким образом. Поскольку у меня был конфликт в библиотеке средств очистки адресов gcc, поступающей из нескольких источников.

Обратите внимание, однако, на разницу между ссылками на библиотеку и обычным способом. Для вашего libtest.a вы делаете это:

target_link_libraries(my_target_or_executable -ltest)

Обратите внимание, что вы сбросили префикс lib здесь. Но не делайте этого, если вы хотите указать библиотеку вручную.

...