Библиотека, связанная с библиотекой, которая сама связана с приложением -> неопределенная ссылка - PullRequest
0 голосов
/ 05 декабря 2018

Я часами смотрю на свою проблему и застреваю ...

У меня есть библиотека lib_1 с функцией getNumber().
Затем у меня есть библиотека lib_2 с функцией addNumbers().
addNumbers(), вызывающая getNumber() из lib_1.

Мой CMakeLists.txt:

add_library( lib_1 STATIC IMPORTED )
set_target_properties(lib_1 PROPERTIES IMPORTED_LOCATION path_to_lib_1)

add_library( lib_2 STATIC lib2.cpp )
target_link_libraries( lib_2 lib_1 )
target_include_directories(lib_2 PUBLIC include )

lib_2 прекрасно компилируется, также работают модульные тесты, использующие getNumber().

Затем я хочу связать lib_2 с моим приложением.

add_library( lib_1 STATIC IMPORTED )
set_target_properties(lib_1 PROPERTIES IMPORTED_LOCATION path_to_lib_1)

add_library( lib_2 STATIC IMPORTED )
set_target_properties(lib_2 PROPERTIES IMPORTED_LOCATION path_to_lib_2)

add_executable(app my_source_files )
target_link_libraries(app lib_1 lib_2)

Когда я компилирую свое приложение, я получаю эту хорошо известную ошибку:
В функции addNumbers() изlib_2, неопределенная ссылка на getNumber()

Я действительно не понимаю, почему это неопределенная ссылка ??

И, кстати, мне действительно нужно ссылаться на lib_1 в моем приложении, когда оно уже ссылается на lib_2, которая сама статически ссылается на lib_1?

1 Ответ

0 голосов
/ 05 декабря 2018

Итак, как видно из комментариев, решение состоит в том, чтобы иметь правильный порядок статически связанных библиотек:

add_executable(app my_source_files )
target_link_libraries(app lib_2 lib_1)
...