首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Qt5的CMAKE中包含QGLVIEWER

如何在Qt5的CMAKE中包含QGLVIEWER
EN

Stack Overflow用户
提问于 2019-01-14 21:48:51
回答 1查看 945关注 0票数 1

我将CMAKE设置为包含QGLViewer的Qt5项目。但是,一旦我试图编译项目,CMAKE就会停止,并出现以下错误:

CMake错误:在此项目中使用了以下变量,但它们被设置为NOTFOUND。请设置它们或确保它们在CMake文件中被正确设置和测试:目录/home/emanuele/sfm中由目标"sfm“链接的QGLVIEWER_LIBRARY

QGLViewer出现在以下路径上:可以从此打印屏幕上看到的usr/include/QGLViewer

下面是我如何在CMAKE上设置路径:

此外,我发现本源有助于理解如何声明库。同时,这个职位也可以帮助我找到正确的路线,但仍然不起作用。

下面是引起这一问题的最重要的CMAKE部分:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.11)
project(sfm)

########### options ###############
SET(USE_QT TRUE CACHE BOOL)
########### END options ###########

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99 -g")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -g")
set(CMAKE_INCLUDE_CURRENT_DIR ON)

########### OpenMP ################
find_package(OpenMP)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
########### END OpenMP ############

########### OpenCV ################
set (OpenCV_DIR /home/emanuele/opencv/build)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
list(APPEND LINK_LIBRARIES ${OpenCV_LIBS})
########### END OpenCV ############

########### Qt 5 ##################
IF (USE_QT)
  ADD_DEFINITIONS("-DUSE_QT")
  find_package(Qt5Widgets REQUIRED)
  find_package(Qt5Xml REQUIRED)
  find_package(Qt5OpenGL REQUIRED)

  include_directories(${Qt5Widgets_INCLUDE_DIRS}
      ${Qt5Xml_INCLUDE_DIRS}
      ${Qt5OpenGL_INCLUDE_DIRS}
  )
  list(APPEND LINK_LIBRARIES Qt5::Widgets Qt5::Xml Qt5::OpenGL)
  set(CMAKE_AUTOMOC ON)
  set(CMAKE_AUTOUIC ON)

  include_directories(src/ui/mainwindow src/ui/widgets)

  find_package(OpenGL REQUIRED)
  find_library(QGLVIEWER_LIBRARY
      NAMES qglviewer-qt5 qglviewer QGLViewer QGLViewer2)
  list(APPEND LINK_LIBRARIES ${QGLVIEWER_LIBRARY}  ${OPENGL_LIBRARIES})
ENDIF (USE_QT)
########### END Qt 5 ##############

########### sources ###############
file(GLOB_RECURSE SOURCE_FILES "src/*.cpp")
add_executable(sfm ${SOURCE_FILES})
########### END sources ###########

########### headers ###############
include_directories(src)
########### END headers ###########

########### link libraries ########
target_link_libraries(sfm ${LINK_LIBRARIES})
########### END link libraries ####

我希望CMAKE能够编译,但实际结果显示在下面的打印屏幕上,使我无法继续前进:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-03 07:43:46

您应该在CMAKE_PREFIX_PATH变量中设置qglviewer库的路径。

或者您可以将它集成为一个新的目标,使用qglviewer存档作为输入:

代码语言:javascript
复制
set(QGLVIEWER_FILES ${CMAKE_BINARY_DIR}/libQGLViewer-2.7.1/QGLViewer/qglviewer.h)

get_target_property (QT_QMAKE_EXECUTABLE Qt5::qmake IMPORTED_LOCATION)

add_custom_command(OUTPUT ${QGLVIEWER_FILES}
  COMMAND  tar xzf "${CMAKE_CURRENT_SOURCE_DIR}/libQGLViewer-2.7.1.tar.gz" --strip 1
  COMMAND ${QT_QMAKE_EXECUTABLE} -o QMakefile 
  COMMAND make -f QMakefile 
#  COMMAND ${CMAKE_COMMAND} -E touch ${LIBFOO_TAR_HEADERS}
  WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/libQGLViewer-2.7.1"
  DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/libQGLViewer-2.7.1.tar.gz"
  COMMENT "Unpacking libQGLViewer-2.7.1.tar.gz"
  VERBATIM
)

add_custom_target(qglviewer_untar DEPENDS ${QGLVIEWER_FILES})

add_library(qglviewer SHARED IMPORTED)
add_dependencies(qglviewer qglviewer_untar)

# link qglviewer
set_target_properties(qglviewer PROPERTIES
                      IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/libQGLViewer-2.7.1/QGLViewer/libQGLViewer-qt5.so"
                      INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_BINARY_DIR}/libQGLViewer-2.7.1")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54189696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档