Получение эталонной проблемы в Qt при реализации OpenSceneGraph

Я получаю сообщение об ошибке (**

**> CMakeFiles\untitled3.dir/objects.a(main.cpp.obj):main.cpp:(.text+0x46):

неопределенная ссылка на `_imp___ZN9osgViewer6ViewerC1Ev'**)

при добавлении OpenSceneGraph в Qt. Мой профиль cmakelist.txt.

cmake_minimum_required(VERSION 2.8.12)

project(untitled3)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)

find_package(Qt5Core)
FIND_PATH(OPENSCENEGRAPH_INCLUDE_DIR osg/Referenced
    PATHS
    $ENV{OSG_ROOT}/include
    $ENV{OSG_DIR}/include
    /usr/include
    /usr/local/include
)

FIND_PATH(OPENSCENEGRAPH_LIB_DIR libosg.so osg.lib
    PATHS
    $ENV{OSG_ROOT}/lib
    $ENV{OSG_DIR}/lib
    /usr/lib
    /usr/local/lib
)

INCLUDE_DIRECTORIES(common ${OPENSCENEGRAPH_INCLUDE_DIR})
LINK_DIRECTORIES(${OPENSCENEGRAPH_LIB_DIR})

add_executable(${PROJECT_NAME} "main.cpp")

target_link_libraries(${PROJECT_NAME} Qt5::Core)

Мой файл main.cpp

#include <QCoreApplication>
#include <osgViewer/Viewer>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    osgViewer::Viewer viewer;
//       viewer.setSceneData( osgDB::readNodeFile("cessna.osg") );
//       return viewer.run();
    return a.exec();
}

Любые люди, которые могут помочь. Я приглашаю их выйти вперед.


person Lovekesh    schedule 06.01.2018    source источник


Ответы (1)


Проблема с вашим файлом cmake. Вы должны убедиться, что:

  1. Найдите необходимые OSG-пакеты (в вашем случае osgViewer).
  2. Свяжите свой исполняемый файл с целевыми библиотеками OSG.

Так же, как вы сделали это для QtCore:

find_package(Qt5Core)
find_package(OpenSceneGraph REQUIRED COMPONENTS osgViewer)
# ...
target_link_libraries(${PROJECT_NAME} Qt5::Core  ${OPENSCENEGRAPH_LIBRARIES} )
person vicrucann    schedule 07.01.2018