Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Линковка с кастомной внешней библиотекой в CMAKE  (Прочитано 850 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн BlinCT

  • Автор темы
  • Участник
  • *
  • Сообщений: 124
    • Просмотр профиля
Всем привет.
Пытаюсь собрать проект Qt на cmake но столкнулся с проблемой линковки с отдельно собранной своей либой.
Проект с библиотекой не должен подключатся с данному проекту. Либа динамическая.
Вот так выглядит мои наработки. Подскажите как правильно это сделать?
Ниже кидаю сам cmake и ошибку линковки.
...
[ 67%] Building CXX object CMakeFiles/maintenance.dir/qrc_resources.cpp.o
[ 69%] Building CXX object CMakeFiles/maintenance.dir/maintenance_autogen/moc_compilation.cpp.o
[ 71%] Linking CXX executable maintenance
CMakeFiles/maintenance.dir/MainWindow.cpp.o: In function `MainWindow::MainWindow(QMainWindow*)':
/media/blinct/free1/QtProjects/Applications/095/maintenance/MainWindow.cpp:74: undefined reference to `TenzGraphTab::TenzGraphTab(QWidget*)'
CMakeFiles/maintenance.dir/maintenance_autogen/moc_compilation.cpp.o: In function `AngleSensors::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)':
/media/blinct/free1/QtProjects/Applications/095/maintenance/cmake-build-debug/maintenance_autogen/ECUKZBRF6L/moc_AngleSensors.cpp:92: undefined reference to `AngleSensors::OnSetNullPosition()'
/media/blinct/free1/QtProjects/Applications/095/maintenance/cmake-build-debug/maintenance_autogen/ECUKZBRF6L/moc_AngleSensors.cpp:93: undefined reference to `AngleSensors::OnResetAccel()'
/media/blinct/free1/QtProjects/Applications/095/maintenance/cmake-build-debug/maintenance_autogen/ECUKZBRF6L/moc_AngleSensors.cpp:94: undefined reference to `AngleSensors::OnDataReceived(QString, QMap<QString, QVariant>)'
/media/blinct/free1/QtProjects/Applications/095/maintenance/cmake-build-debug/maintenance_autogen/ECUKZBRF6L/moc_AngleSensors.cpp:95: undefined reference to `AngleSensors::OnHandleUp()'
/media/blinct/free1/QtProjects/Applications/095/maintenance/cmake-build-debug/maintenance_autogen/ECUKZBRF6L/moc_AngleSensors.cpp:96: undefined reference to `AngleSensors::OnHandleDown()'
/media/blinct/free1/QtProjects/Applications/095/maintenance/cmake-build-debug/maintenance_autogen/ECUKZBRF6L/moc_AngleSensors.cpp:97: undefined reference to `AngleSensors::OnHandleReleased()'
/media/blinct/free1/QtProjects/Applications/095/maintenance/cmake-build-debug/maintenance_autogen/ECUKZBRF6L/moc_AngleSensors.cpp:98: undefined reference to `AngleSensors::OnHandleTimer()'
CMakeFiles/maintenance.dir/maintenance_autogen/moc_compilation.cpp.o:(.data.rel.ro._ZTV17AngleSensorColumn[_ZTV17AngleSensorColumn]+0x28): undefined reference to `AngleSensorColumn::~AngleSensorColumn()'
CMakeFiles/maintenance.dir/maintenance_autogen/moc_compilation.cpp.o:(.data.rel.ro._ZTV17AngleSensorColumn[_ZTV17AngleSensorColumn]+0x30): undefined reference to `AngleSensorColumn::~AngleSensorColumn()'
CMakeFiles/maintenance.dir/maintenance_autogen/moc_compilation.cpp.o:(.data.rel.ro._ZTV17AngleSensorColumn[_ZTV17AngleSensorColumn]+0x1c0): undefined reference to `non-virtual thunk to AngleSensorColumn::~AngleSensorColumn()'
CMakeFiles/maintenance.dir/maintenance_autogen/moc_compilation.cpp.o:(.data.rel.ro._ZTV17AngleSensorColumn[_ZTV17AngleSensorColumn]+0x1c8): undefined reference to `non-virtual thunk to AngleSensorColumn::~AngleSensorColumn()'
../../../088/build-libs-ubuntu-Release/libNetworkCommunication.so: undefined reference to `BtlSerialPortImpl::setRequestToSend(bool)'
../../../088/build-libs-ubuntu-Release/libNetworkCommunication.so: undefined reference to `g_sVersion_NetworkCommunication'
../../../088/build-libs-ubuntu-Release/libNetworkCommunication.so: undefined reference to `BtlUdpSocketImpl::writeDatagram(QByteArray const&, QHostAddress const&, unsigned short)'
../../../088/build-libs-ubuntu-Release/libNetworkCommunication.so: undefined reference to `BtlTcpServerImpl::isListening() const'
../../../088/build-libs-ubuntu-Release/libNetworkCommunication.so: undefined reference to `BtlFileImpl::close()'
...
само собою там дальше много подобных ошибок

Проектный файл

cmake_minimum_required(VERSION 3.6)
project(maintenance)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC OFF)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

find_package(Qt5Widgets REQUIRED)
find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)
find_package(Qt5Charts REQUIRED)
find_package(Qt5Xml REQUIRED)
find_package(Qt5Network REQUIRED)

include_directories(../../088)

#include(FindPackageHandleStandardArgs)
#find_library(Network_LIBRARY NAMES NetworkCommunication PATHS ../../088/build-libs-ubuntu-Release)
#find_package_handle_standard_args(Network DEFAULT_MSG Network_LIBRARY)

add_library(NetworkCommunication SHARED IMPORTED)
set_property(TARGET NetworkCommunication PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_LIST_DIR}/../../088/build-libs-ubuntu-Release/libNetworkCommunication.so)
set(Network_LIBRARY NetworkCommunication)

qt5_add_resources(RCC_RESOURCES resources.qrc)

file(GLOB SOURCE_FILES_2
        ${CMAKE_CURRENT_SOURCE_DIR}/cop/*.h
        ${CMAKE_CURRENT_SOURCE_DIR}/cop/*.cpp
        ${CMAKE_CURRENT_SOURCE_DIR}/curves/*.h
        ${CMAKE_CURRENT_SOURCE_DIR}/curves/*.cpp
        ${CMAKE_CURRENT_SOURCE_DIR}/curves/shapes/*.h
        ${CMAKE_CURRENT_SOURCE_DIR}/curves/shapes/*.cpp
        ${CMAKE_CURRENT_SOURCE_DIR}/general/*.h
        ${CMAKE_CURRENT_SOURCE_DIR}/general/*.cpp
        ${CMAKE_CURRENT_SOURCE_DIR}/load_cells/*.h
        ${CMAKE_CURRENT_SOURCE_DIR}/load_cells/*.cpp
        ${CMAKE_CURRENT_SOURCE_DIR}/motors/*.h
        ${CMAKE_CURRENT_SOURCE_DIR}/motors/*.cpp
        ${CMAKE_CURRENT_SOURCE_DIR}/passive_mode/*.h
        ${CMAKE_CURRENT_SOURCE_DIR}/passive_mode/*.cpp
        ${CMAKE_CURRENT_SOURCE_DIR}/settings/*.h
        ${CMAKE_CURRENT_SOURCE_DIR}/settings/*.cpp
        ${CMAKE_CURRENT_SOURCE_DIR}/system/*.h
        ${CMAKE_CURRENT_SOURCE_DIR}/system/*.cpp
        ${CMAKE_CURRENT_SOURCE_DIR}/../Gener095/Messages/*.h
        ${CMAKE_CURRENT_SOURCE_DIR}/../Gener095/Messages/*.cpp
        )

set(SOURCE_FILES
        Error.cpp
        Error.hpp
        main.cpp
        MainWindow.cpp
        MainWindow.h
        NetworkCommunicator.cpp
        NetworkCommunicator.h
        Utils.cpp
        Utils.h
        ITab.h
        )

add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${SOURCE_FILES_2} ${RCC_RESOURCES})

target_link_libraries(${PROJECT_NAME} ${Network_LIBRARY})
target_link_libraries(${PROJECT_NAME} Qt5::Widgets Qt5::Core Qt5::Gui Qt5::Charts Qt5::Xml Qt5::Network)

include(../../088/BuildUtilities/scripts/lib_setup.cmake)

Буду очень признателен за советы и помощь. Просто у меня в 5 проектах подобные проблемы с линковками в данном виде.

Оффлайн BlinCT

  • Автор темы
  • Участник
  • *
  • Сообщений: 124
    • Просмотр профиля
неужели никто не линковал в проекты либы через cmake? Странная тишина(

 

Страница сгенерирована за 0.053 секунд. Запросов: 25.