Я хотел бы построить библиотеку статическим способом и интегрировать ее (вместе все ее зависимости) в моем проекте. Целевая платформа (в конечном счете) - андроид. В настоящее время я просто хочу протестировать весь процесс для моего Linux (debian 64-bit) vm на хосте Windows. Результирующая структура проекта должна выглядеть так:cmake: как рассказать библиотеке, где найти зависимости
project/
|
|----- thirdparty/
| |
| |----- lib1/ (depends on 2 and 3)
| |----- lib2/
| ----- lib3/
----- application/
lib1 - это библиотека, которую я использую в своем приложении. Все библиотеки уже созданы для моей текущей целевой системы. Я использовал сценарии configure
, которые поставлялись с библиотеками. Поскольку lib1 требует lib2 и lib3, я ссылался на них, используя with-lib2-prefix=<pathof-lib2>
. Сценарий CMake, который я использую для создания приложения с QtCreator ссылки Lib1 как это:
ADD_LIBRARY(lib1 STATIC IMPORTED)
SET(lib1_path ${CMAKE_SOURCE_DIR}/thirdparty/lib1/lib1.a)
# and give path to external library with IMPORTED_LOCATION
SET_TARGET_PROPERTIES(gpgme PROPERTIES IMPORTED_LOCATION ${lib1_path})
//later...
target_link_libraries( ${COMPONENT_NAME}
lib1
)
Lib1 встречается, как и ожидалось, но, как вы, возможно, уже подозревают, что зависимости не обнаружено. Действительно, я никогда не говорил, как это сделать. Однако, поскольку я очень новичок в cmake, я не знаю, как это делается.
Либо я хотел бы сказать lib1, где можно найти lib2 и lib3 с cmake. Или, если это невозможно, не касаясь «build-process» lib1, возможно, мне удастся как-то правильно называть ./configure
из cmake. У кого-то была аналогичная проблема, и я мог бы посоветовать, как это сделать?
ли это помощь https://cmake.org/cmake/help/v3.0/command/link_directories.html: link_directories ($ {CMAKE_SOURCE_DIR}/ThirdParty/lib2) –
Я попытался добавить эту строку перед ADD_LIBRARY и (вторая попытка) непосредственно перед target_link_libraries. К сожалению, это не сработало. Я получаю ту же ошибку, говоря «undefine reference» –