Привет, я новичок в CMAKE, и я пытаюсь c привязать следующие файлы библиотеки к моему проекту:
/usr/lib/i386-linux-gnu/libsqlite3.so.0
/usr/local/lib/libprotobuf.so.15
/lib/i386-linux-gnu/libpthread.so.0
/usr/local/lib/libzmq.so.5
/usr/local
/usr/lib/i386-linux-gnu/libsqlite3.so.0/usr/local/lib/libprotobuf.so.15/lib/i386-linux-gnu/libpthread.so.0/usr/local/lib/libzmq.so.5/usr/local/
Я читал документацию CMAKE, а также предыдущие сообщения отсюда, все, что мне нужно сделать, это связать эти библиотеки с исполняемым файлом с помощью `target_link_directories () ', однако запуск ldd в двоичном файле не показывает, что они связаны.
Сначала я создаю исполняемый файл с add_executable
:
add_executable( main ${PROJECT_SOURCE_DIR}/src/main.cpp )
Я устанавливаю пути к файлам .a
lib по:
find_library(STATIC_LSQLITE NAME libsqlite3.a HINTS ${CMAKE_INSTALL_PREFIX})
find_library(STATIC_LPROTO NAME libprotobuf.a HINTS ${CMAKE_INSTALL_PREFIX})
find_library(STATIC_LPTHREAD NAMES libpthread.a )
find_library(STATIC_LZMQ NAMES libzmq.a)
find_library(STATIC_LCURL NAMES libcurl.a)
set ( STATIC_LIBS ${STATIC_LSQLITE} ${STATIC_LPROTO} ${STATIC_LPTHREAD} ${STATIC_LZMQ} ${STATIC_LCURL} )
из которых дает полный путь STATIC_LIBS:
/usr/lib/i386-linux-gnu/libsqlite3.a/usr/local/lib/libprotobuf.a/usr/lib/i386-linux-gnu/libpthread.a/usr/local/lib/libzmq.a/usr/local/lib/libcurl.a
, а затем:
target_link_libraries( main ${STATIC_LIBS} )
Однако при компиляции ldd показывает:
libsqlite3.so.0 => /usr/lib/i386-linux-gnu/libsqlite3.so.0 (0xf7e6a000)
libprotobuf.so.15 => /usr/local/lib/libprotobuf.so.15 (0xf7be3000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7bc6000)
libzmq.so.5 => /usr/local/lib/libzmq.so.5 (0xf7ae0000)
libcurl.so.4 => /usr/local/lib/libcurl.so.4 (0xf7a50000)
Я уже некоторое время чесал голову по этому поводу, так что любая помощь было бы здорово.
Я думал иначе, когда запустил make package
, я мог бы передать файлы lib в команде install()
, но мне тоже не удалось заставить это работать. Код для моей попытки установки библиотек:
install(
TARGETS main
DESTINATION "/path/to/install"
)
install(
FILES ${PROJECT_SOURCE_DIR}/src/config.conf
DESTINATION "/path/to/install"
)
install(
LIBRARY ${STATIC_LIBS}
DESTINATION "/path/to/install"
)