NDK связывает библиотеку с cmake - PullRequest
0 голосов
/ 27 августа 2018

У меня есть библиотека c ++, которая выполняет рендеринг opengl (es 2.0), и я хочу использовать ее на Android. При связывании библиотеки с target_link_libraries(mylib log GLESv2) я получаю следующую ошибку:

ld: error: cannot open crtbegin_so.o: No such file or directory
ld: error: cannot open crtend_so.o: No such file or directory
ld: error: cannot find -llog
ld: error: cannot find -lGLESv2
ld: error: cannot find -lm
ld: error: cannot find -lstdc++
ld: error: cannot find -lm
ld: error: cannot find -ldl
ld: error: cannot find -lc
ld: error: cannot find -ldl

Если я вручную предоставлю конкретный каталог из android ndk, он будет работать. В cmake это выглядит примерно так:

link_directories( ${ANDROID_NDK}/platforms/${ANDROID_API}/arch-${ANDROID_ABI}/usr/lib )

Мне интересно, если это правильный способ решить эту ошибку. В этом простом примере дополнительное определение link_directories не требуется. В чем разница с моей библиотекой?

1 Ответ

0 голосов
/ 14 сентября 2018

Причина этого была довольно проста. Я переписывал флаги компилятора в моих файлах cmake:

SET(CMAKE_CXX_FLAGS "-foo" )

когда я изменил это на

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -foo" )

проблемы со связью исчезли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...