Вам необходимо связать dbookpy с dbook:
target_link_libraries(dbookpy dbook)
Добавим, что сразу после строки ADD_LIBRARY(dbookpy dbookpy)
должен это сделать.
Я вижу, вы используете IMPORTED - справка для IMPORTED_LINK_INTERFACE_LIBRARIES
гласит:
Lists libraries whose interface is included when an IMPORTED library target is
linked to another target. The libraries will be included on the link line for
the target. Unlike the LINK_INTERFACE_LIBRARIES property, this property
applies to all imported target types, including STATIC libraries. This
property is ignored for non-imported targets.
Таким образом, это означает, что dbook, который находится в / usr / local / lib, должен быть импортированной библиотекой:
add_library(dbook SHARED IMPORTED)
Это действительно то, что вы хотели? Я имею в виду, что импортированные библиотеки созданы вне CMake, но включены как часть вашего исходного дерева. Библиотека dbook, кажется, установлена или, по крайней мере, ожидается, что будет установлена. Я не думаю, что вам нужен импорт здесь - похоже, это проблема регулярных связей. Но это может быть просто побочным эффектом создания минимального примера для публикации здесь.
Судя по всему, чтобы отсортировать связанные библиотеки и каталоги ссылок, я бы, вероятно, использовал find_library()
, который будет искать в разумных местах по умолчанию, таких как / usr / local / lib, и затем добавлять это к библиотеки ссылок.
find_library(DBOOK_LIBRARY dbook REQUIRED)
target_link_libraries(dbookpy ${DBOOK_LIBRARY})
Во всяком случае, похоже, что вы уже отсортировали его.