Создание привязки общего объекта Python с cmake, который зависит от внешних библиотек

Вы можете использовать реальное изображение 480x320, если добавите логический ключ UIStatusBarHidden в файл Info.plist и установите его в значение true.

6
задан Edd Barrett 14 June 2009 в 03:22
поделиться

2 ответа

Вам нужно связать 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 установлена ​​или, по крайней мере, ожидается, что она будет установлена. Я не думаю, что вам здесь нужен импорт - похоже, это обычная проблема с привязкой. Но это может быть просто побочным эффектом создания минимального примера для публикации здесь.

Судя по всему,

3
ответ дан 17 December 2019 в 07:08
поделиться

Спасибо за вашу помощь.

Вы правы, говоря, что IMPORTED, вероятно, не нужен. Добавление LINK_LIBRARIES (dbookpy dbook) действительно добавляет -ldbook к выполнению gcc, так что это здорово.

Однако cmake, похоже, игнорирует LINK_DIRECTORIES, и поэтому никогда не находит -ldbook:

/usr/bin/gcc  -fPIC    -shared -o libdbookpy.so.0.1 "CMakeFiles/dbookpy.dir/dbookpy.o" -ldbook 
/usr/bin/ld: cannot find -ldbook

Вот CMakeList в его нынешнем виде:

PROJECT(dbookpy)
SET(CMAKE_VERBOSE_MAKEFILE ON)

OPTION(BUILD_SHARED_LIBS "turn OFF for .a libs" ON)
ADD_LIBRARY(dbookpy dbookpy)
SET_TARGET_PROPERTIES(dbookpy PROPERTIES LINKER_LANGUAGE C)


FIND_PACKAGE(PythonInterp)
FIND_PACKAGE(PythonLibs)

INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
INCLUDE_DIRECTORIES(/usr/local/include)
target_link_libraries(dbookpy dbook)
LINK_DIRECTORIES("/usr/local/lib")

SET_TARGET_PROPERTIES(dbookpy
PROPERTIES
        SOVERSION 0.1
        VERSION 0.1
)

INSTALL(TARGETS dbookpy
        LIBRARY DESTINATION lib
)

Есть идеи?

1
ответ дан 17 December 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: