Skip to content

QWT库的引入

直接引入

直接引入只需把QwtPlot.hQwtPlot.cpp添加到工程里即可

直接引入的cmake示例如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# QwtPlot依赖Core Gui Widgets Svg Concurrent OpenGL PrintSupport这几个模块,需要引入工程
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} 5.8 COMPONENTS Core Gui Widgets Svg Concurrent OpenGL PrintSupport REQUIRED)


add_executable(YOU_APP_TARGET
    main.cpp
    QwtPlot.h
    QwtPlot.cpp
    # 你的项目其他文件
)

target_link_libraries(YOU_APP_TARGET 
    PUBLIC
    Qt${QT_VERSION_MAJOR}::Core 
    Qt${QT_VERSION_MAJOR}::Gui 
    Qt${QT_VERSION_MAJOR}::Widgets
    Qt${QT_VERSION_MAJOR}::Svg
    Qt${QT_VERSION_MAJOR}::Concurrent
    Qt${QT_VERSION_MAJOR}::OpenGL
    Qt${QT_VERSION_MAJOR}::PrintSupport
    )

if(${QT_VERSION_MAJOR} EQUAL 6)
   find_package(Qt${QT_VERSION_MAJOR} ${QWT_MIN_QT_VERSION} COMPONENTS
       OpenGLWidgets
       REQUIRED
   )
   target_link_libraries(YOU_APP_TARGET PRIVATE
       Qt${QT_VERSION_MAJOR}::OpenGLWidgets
   )
endif()
find_package(OpenGL COMPONENTS OpenGL REQUIRED)
target_link_libraries(YOU_APP_TARGET PRIVATE OpenGL::GLU)

提示

qwt7.1之后合并了qwtplot3d库,因此需要引入opengl相关的依赖

基于cmake引入QWT库

这是推荐的引入QWT库方式

首先不建议直接把整个qwt库作为子项目加入到你的项目中,而是先编译并安装到本地,编译安装方法参考:QWT构建说明

基于cmake引入QWT库按照如下步骤执行:

1. 指定QWT的安装目录

把安装目录下的lib/cmake/qwt位置设置给qwt_DIR变量(CMake在执行find_package(xx)时,会先查看是否有xx_DIR变量,如果有,会先查询xx_DIR下是否有对应的xxConfig.cmake文件)

提示

如果你使用默认安装目录,那么qwt_DIR变量可以不设置,cmake能自动找到

例如:

1
set(qwt_DIR "C:\src\my-install-path\cmake\qwt")

2. 使用find_package加载库

QWT 提供了标准的 CMake 配置文件,可以通过 find_package 命令引入

1
2
3
4
5
6
7
find_package(qwt REQUIRED)

# 链接 QWT的2D绘图库到您的目标
target_link_libraries(YOU_APP_TARGET PRIVATE qwt::plot) # 会自动把qt的依赖添加到目标中

# 链接 QWT的3D绘图库到您的目标
target_link_libraries(YOU_APP_TARGET PRIVATE qwt::plot3d) # 会自动把qt的依赖以及opengl的依赖添加到目标中

qwt项目提供了两个模块:

  • plot模块,主要为2D绘图库,是原qwt的功能集成
  • plot3d模块,主要为3D绘图库,是qwtplot3d的功能集成

依赖说明

qwt依赖的Qt模块为CoreGuiWidgetsSvgConcurrentOpenGLPrintSupport,(如果是Qt6还会包含OpenGLWidgets),这些模块在引入qwt库时,会自动添加依赖

此外qwt7.1之后合并了qwtplot3d库,如果3D选项打开,会自动引入OpenGL::GLU依赖

公开的预定义宏

QWT在编译过程中有些预定义宏,如果你是用CMake管理项目,那么通过find_package加载库时,会自动预定定义好,无需手动添加

但如果你使用类似vistual studio的界面来手动引入库,你除了添加lib文件外,还需要指定预定于宏。如果是编译为dll库,引入qwtplot库你需要预定义宏QWT_DLL,引入qwtplot3d库你需要预定义宏QWT3D_DLL

提示

作为现代c++项目,强烈建议使用cmake构建你的项目,这些预定义项都在cmake的配置中预制好