CTK编译QT的GUI插件

匿名 (未验证) 提交于 2019-12-02 22:56:40

CTK创建插件部分见――――使用CMake创建一个最简CTK插件

CTK创建QT插件时使用上述方式创建的是非GUI插件,而对于QT的GUI插件插件,创建时需要使用QWidgets和QGui库,这些库通过修改CMake文件配置失败,理论配置方式如下,并且CMake也成功找到了QT目录下的相应.cmake配置文件,但是最终生成项目中却没有配置好相应的库,原因不明:

打开ctkMacroSetupQt.cmake:

 ########################################################################### # #  Library:   CTK # #  Copyright (c) Kitware Inc. # #  Licensed under the Apache License, Version 2.0 (the "License"); #  you may not use this file except in compliance with the License. #  You may obtain a copy of the License at # #      http://www.apache.org/licenses/LICENSE-2.0.txt # #  Unless required by applicable law or agreed to in writing, software #  distributed under the License is distributed on an "AS IS" BASIS, #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #  See the License for the specific language governing permissions and #  limitations under the License. # ###########################################################################  #! \ingroup CMakeUtilities macro(ctkMacroSetupQt)   set(CTK_QT_VERSION "5" CACHE STRING "Expected Qt version")   mark_as_advanced(CTK_QT_VERSION)    set_property(CACHE CTK_QT_VERSION PROPERTY STRINGS 5 4)    if(NOT (CTK_QT_VERSION VERSION_EQUAL "4" OR CTK_QT_VERSION VERSION_EQUAL "5"))     message(FATAL_ERROR "Expected value for CTK_QT_VERSION is either '4' or '5'")   endif()     if(CTK_QT_VERSION VERSION_GREATER "4")     cmake_minimum_required(VERSION 2.8.12)     find_package(Qt5 COMPONENTS Core)     set(CTK_QT5_COMPONENTS Core Xml XmlPatterns Concurrent Sql Test)     if(CTK_ENABLE_Widgets OR CTK_LIB_Widgets OR CTK_LIB_CommandLineModules/Frontend/QtGui OR CTK_BUILD_ALL OR CTK_BUILD_ALL_LIBRARIES)       list(APPEND CTK_QT5_COMPONENTS Widgets OpenGL UiTools)     endif()     if(CTK_LIB_CommandLineModules/Frontend/QtWebKit OR CTK_BUILD_ALL OR CTK_BUILD_ALL_LIBRARIES)       if(TARGET Qt5::WebKitWidgets)         list(APPEND CTK_QT5_COMPONENTS WebKitWidgets)       else()         list(APPEND CTK_QT5_COMPONENTS WebEngineWidgets)       endif()     endif()     if(CTK_LIB_XNAT/Core OR CTK_BUILD_ALL OR CTK_BUILD_ALL_LIBRARIES)       list(APPEND CTK_QT5_COMPONENTS Script)     endif()     find_package(Qt5 COMPONENTS ${CTK_QT5_COMPONENTS} REQUIRED)      mark_as_superbuild(Qt5_DIR) # Qt 5      # XXX Backward compatible way     if(DEFINED CMAKE_PREFIX_PATH)       mark_as_superbuild(CMAKE_PREFIX_PATH) # Qt 5     endif()    else()     set(minimum_required_qt_version "4.6")      find_package(Qt4)      if(QT4_FOUND)        if("${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}" VERSION_LESS "${minimum_required_qt_version}")         message(FATAL_ERROR "error: CTK requires Qt >= ${minimum_required_qt_version} -- you cannot use Qt ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}.")       endif()        set(QT_USE_QTNETWORK ON)       set(QT_USE_QTSQL ON)       set(QT_USE_QTOPENGL ON)       set(QT_USE_QTXML ON)       set(QT_USE_QTXMLPATTERNS ON)       set(QT_USE_QTTEST ${BUILD_TESTING})       include(${QT_USE_FILE})        # Set variable QT_INSTALLED_LIBRARY_DIR that will contains       # Qt shared library       set(QT_INSTALLED_LIBRARY_DIR ${QT_LIBRARY_DIR})       if(WIN32)         get_filename_component(QT_INSTALLED_LIBRARY_DIR ${QT_QMAKE_EXECUTABLE} PATH)       endif()        mark_as_superbuild(QT_QMAKE_EXECUTABLE) # Qt 4     else()       message(FATAL_ERROR "error: Qt4 was not found on your system. You probably need to set the QT_QMAKE_EXECUTABLE variable")     endif()   endif()    mark_as_superbuild(CTK_QT_VERSION) endmacro() 

在set(CTK_QT5_COMPONENTS Core Xml XmlPatterns Concurrent Sql Test)项添加Gui Widgets项,即:

  • 改:set(CTK_QT5_COMPONENTS Core Xml XmlPatterns Concurrent Sql Test)

由于下面有对Widgets项的添加,为了避免重复添加,对其添加注释:

  • #if(CTK_ENABLE_Widgets OR CTK_LIB_Widgets OR CTK_LIB_CommandLineModules/Frontend/QtGui OR CTK_BUILD_ALL OR CTK_BUILD_ALL_LIBRARIES)
  • #endif()

但是可以在CTK生成成功后(有一项会失败,就是这个GUI插件,但是项目已经构建,只是生成失败),打开该GUI插件工程,手动在插件项目中添加:

include目录:

  1. C:\Qt\Qt5.7.1\5.7\msvc2015\include\QtANGLE
  2. C:\Qt\Qt5.7.1\5.7\msvc2015\include\QtGui
  3. C:\Qt\Qt5.7.1\5.7\msvc2015\include\QtWidgets

链接器附加依赖性:

Debug模式下:

  1. C:\Qt\Qt5.7.1\5.7\msvc2015\lib\Qt5Guid.lib
  2. C:\Qt\Qt5.7.1\5.7\msvc2015\lib\Qt5Widgetsd.lib

Release模式下:

  1. C:\Qt\Qt5.7.1\5.7\msvc2015\lib\Qt5Gui.lib
  2. C:\Qt\Qt5.7.1\5.7\msvc2015\lib\Qt5Widgets.lib

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!