Сообщение Почему библиотека не включается в SHARED? от 13.12.2023 7:04
Изменено 13.12.2023 7:17 Shmj
Почему библиотека не включается в SHARED?
Вопрос такой, промучался 3 дня и сил уже нет.
Есть CMake-файл, там описана сборка SHARED-библиотеки. В нее включается много мелких библиотек с помощью target_link_libraries.
Мелкие библиотеки все статические — libmylib.a. Итоговая библиотека — SHARED — .so для Android и .dylib для macOS и iOS.
Так вот, один и тот же CMakeList файл — для iOS собирает библиотеку и она работает. Для Android — не видит символов.
Вот что сделал — вручную начал подключать эти мелкие .a библиотеки к проекту — и выявил что пару библиотек оно не включило в итоговый .so -файл. Ну взяло и не включило, хотя в target_link_libraries они указаны наряду с остальными. Если их вручную скопировать (эти .a-файлы) — то символы находит и итоговый проект собирается.
Пробовал добавить PUBLIC в target_link_libraries — ничего не дало.
В чем может быть проблема?
Есть CMake-файл, там описана сборка SHARED-библиотеки. В нее включается много мелких библиотек с помощью target_link_libraries.
Мелкие библиотеки все статические — libmylib.a. Итоговая библиотека — SHARED — .so для Android и .dylib для macOS и iOS.
Так вот, один и тот же CMakeList файл — для iOS собирает библиотеку и она работает. Для Android — не видит символов.
Вот что сделал — вручную начал подключать эти мелкие .a библиотеки к проекту — и выявил что пару библиотек оно не включило в итоговый .so -файл. Ну взяло и не включило, хотя в target_link_libraries они указаны наряду с остальными. Если их вручную скопировать (эти .a-файлы) — то символы находит и итоговый проект собирается.
Пробовал добавить PUBLIC в target_link_libraries — ничего не дало.
В чем может быть проблема?
Почему библиотека не включается в SHARED?
Вопрос такой, промучался 3 дня и сил уже нет.
Есть CMake-файл, там описана сборка SHARED-библиотеки. В нее включается много мелких библиотек с помощью target_link_libraries.
Мелкие библиотеки все статические — libmylib.a. Итоговая библиотека — SHARED — .so для Android и .dylib для macOS и iOS.
Так вот, один и тот же CMakeList файл — для iOS собирает библиотеку и она работает. Для Android — не видит символов.
Вот что сделал — вручную начал подключать эти мелкие .a библиотеки к проекту — и выявил что пару библиотек оно не включило в итоговый .so -файл. Ну взяло и не включило, хотя в target_link_libraries они указаны наряду с остальными. Если их вручную скопировать (эти .a-файлы) а так же указать в target_link_libraries для итогового проекта — то символы находит и итоговый проект собирается.
Пробовал добавить PUBLIC в target_link_libraries — ничего не дало.
В чем может быть проблема?
Есть CMake-файл, там описана сборка SHARED-библиотеки. В нее включается много мелких библиотек с помощью target_link_libraries.
Мелкие библиотеки все статические — libmylib.a. Итоговая библиотека — SHARED — .so для Android и .dylib для macOS и iOS.
Так вот, один и тот же CMakeList файл — для iOS собирает библиотеку и она работает. Для Android — не видит символов.
Вот что сделал — вручную начал подключать эти мелкие .a библиотеки к проекту — и выявил что пару библиотек оно не включило в итоговый .so -файл. Ну взяло и не включило, хотя в target_link_libraries они указаны наряду с остальными. Если их вручную скопировать (эти .a-файлы) а так же указать в target_link_libraries для итогового проекта — то символы находит и итоговый проект собирается.
Пробовал добавить PUBLIC в target_link_libraries — ничего не дало.
В чем может быть проблема?