• KDChart3.0编译过程-使用QT5.15及QT6.x编译


    参考原文

    记录我的KDChart3.0编译过程
    系统:win11,Qt5.15 ,编译器mingw 64位


    版权声明:本文为博主原创文章,遵循 CC 4.0
    BY-SA

    版权协议,转载请附上原文出处链接和本声明。


    注意,KDChart3.0要求QT5.15及以上版本

    一、下载KDChart源文件

    打开官网https://www.kdab.com/development-resources/qt-tools/kd-chart/

    拉到最下面,

    image-20231023225936339
    • 下载源文件,然后解压。

    • 查看文件夹里的INSTALL.txt,可以看到需要CMake编译。
    image-20231023230311958

    中文版

    这些是使用CMake构建系统安装KD Chart的说明。
    需要使用CMake版本3.3或更高版本。
    
    Qt版本支持:
    
    KD Chart 2.5.0或以下版本需要Qt4
    KD Chart 2.5.1到2.7.2需要Qt4到Qt5.15
    KD Chart 2.8.x删除了Qt4支持(即仅限Qt5)
    KD Chart 3.0或更高版本需要Qt5.15.0到Qt6.x (如果需要支持旧版Qt5,请发送邮件至info@kdab.com)
    请注意,Qt6构建需要符合C++17标准的编译器,而Qt5构建可以通过C++11标准。
    
    请参阅CMakeLists.txt顶部的注释,以获取可传递给cmake的可用配置选项。
    
    Windows上的安装目录默认为c:\ KDAB \ KDChart-<version>,
    非Windows平台默认为/usr/local/KDAB/KDChart-<version>。
    您可以通过传递选项 -DCMAKE_INSTALL_PREFIX=/install/path 给cmake来更改此位置。
    
    1)从您的KD Chart安装的顶级目录创建一个构建目录:
    
    mkdir build
    
    并切换到该构建目录:
    
    cd build
    
    2)现在根据所需的构建类型运行'cmake'之一:
    cmake -DCMAKE_BUILD_TYPE=Debug ..
    cmake -DCMAKE_BUILD_TYPE=Release ..
    cmake -DKDChart_STATIC=True -DCMAKE_BUILD_TYPE=Debug ..
    cmake -DKDChart_STATIC=True -DCMAKE_BUILD_TYPE=Release ..
    
    要定义用于安装位置,请使用以下命令:
    cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=C:/kdchart ..
    cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/opt/kdchart ..
    
    3)Unix
    将LD_LIBRARY_PATH设置为指向KD Chart安装的lib目录。 如果您尚未设置LD_LIBRARY_PATH,则在终端中运行:
    % LD_LIBRARY_PATH=/path/to/kdchart/lib:$LD_LIBRARY_PATH
    % export LD_LIBRARY_PATH
    
    上述内容必须添加到您的.bashrc或类似文件中以保持。当然也可以在构建使用KD Reports的软件之前从shell中运行,
    但在这种情况下,您的设置仅在此shell中可用。
    
    4)MacOS
    按照上述描述进行操作,但使用DYLD_LIBRARY_PATH而不是LD_LIBRARY_PATH
    
    5)Windows
    对于运行可执行文件,请将KD Chart dll (kdchart\bin)路径添加到PATH中。例如:set PATH=\path\to\kdchart\bin;%PATH%
    对于开发,请将KD Chart lib (kdchart\lib)路径添加到LIB环境变量中。例如:set LIB=\path\to\kdchart\lib;%LIB%
    
    6)通过键入以下内容构建所有内容:
    
    从您的顶级KD Chart目录运行:
    
    % make    # Unix, Mac
    % nmake   # Windows
    
    7)(可选:)安装KD Chart:
    
    从您的顶级KD Reports目录运行:
    
    % make install   # Unix, Mac
    % nmake install  # Windows
    
    这将把必需的文件复制到安装路径的子目录中:
    对于Unix / Linux,Mac:/usr/local/KDAB/KDChart-VERSION /
    对于Windows,这是:C:\ KDAB \ KDChart-VERSION \
    
    8)查看示例应用程序,它们将帮助您入门KD Chart。
    
    ==测试==
    要构建测试工具包,请向CMake传递-DKDChart_TESTS=true,如下所示:
    % cmake -DKDChart_TESTS=true
    
    然后运行'make test'来运行单元测试。
    
    ==使用==
    从您的CMake项目中添加
    
    find_package(KDChart CONFIG REQUIRED)
    
    或Qt6的情况下
    
    find_package(KDChart-qt6 CONFIG REQUIRED)
    
    并链接到导入的目标KDChart :: kdchart。
    这就是您需要做的全部(导入的目标还带有包含目录)。
    
    根据您安装KDChart的位置,您可能还需要指定CMAKE_PREFIX_PATH环境变量。
    
    • 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
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89

    二、下载安装CMake

    注意:

    如果使用Qt6.x 编译,可以不用安装,Qt6自带CMake,还不用配置!(直接看 三、编译 -> Qt6.x 编译

    CMake下载https://cmake.org/download/

    image-20231023232107794

    我根据自己的系统选了安装版。

    安装时基本都默认设置。可以把桌面图标勾上。

    三、编译

    我们先创建两个文件夹,用来放cmake编译文件。

    我把文件夹放在kdchart源文件下面了。

    image-20231023232622610

    接着打开刚安装的cmake。

    在这里插入图片描述

    填写源文件目录和build文件夹目录。

    image-20231023233549034

    点击Configure

    选择编译器,并指定本地目录。

    image-20231023233854222

    要选择Qt安装目录下的编译器地址。

    image-20231023234614407

    点击Finish,提示找不到文件。

    image-20231023234835956

    Qt5.15.0 编译

    消息框提示,这两个文件找不到。这个文件是在安装目录下的这个位置。注意地址里的编译器版本。

    把地址填到CMake软件中的Qt5_DIR这项,

    image-20231023235832084

    然后再点Configure。依然报错,这次少了Qt5sql。

    填入地址,

    再点Configure。这次窗口不红了,不报错了。

    Qt6.x 编译

    image-20231024001904430
    • 没有找到 Qt6Config.cmake qt6-config.cmake,填写Qt6_DIR,再点Configure
    image-20231024002309753
    • 没有找到 Qt6CoreToolsConfig.cmake qt6coretools-config.cmake;填写Qt6GuiTools_DIR,再点Configure
    image-20231024002657653

    CMake:允许设置 Qt6_DIR 在不交叉编译时查找包

    image-20231024004247925

    解决办法:

    1.设置Qt6_close不足以查找Qt包

    2.c++ CMake在Qt6安装中找不到软件包

    还有一篇文章使用方法是:

    设置

    QT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH

    QT_ADDITIONAL_PACKAGES_PREFIX_PATH

    image-20231024014211452

    但是我没有成功

    使用Qt6.X编译的直接看这最快
    • 直接使用QT6自带的cmake-gui(QT\6.x\Tools\CMake_64\bin\cmake-gui)

      image-20231024214855128

    先点击Configure,不报错,点击Generate。

    image-20231024014731703

    选择需要的build版本(debug或release)。我这次选择release的(debug版本已经编译过了)。

    往下翻,这是install文件夹,可以更改为喜欢的位置,但请记住它。

    改好后,点击Generate。

    成功了。

    管理员身份打开CMD窗口,cd到刚才的build文件夹。

    image-20231024215425486 image-20231024215647943

    切换到非C盘,如F盘

    C:\> F:
    F:\> cd xxx
    
    • 1
    • 2

    输入命令 mingw32-make.exe

    这里一定是mingw32,不要因为是64位编译器就填64了。

    按回车。编译蛮久的,等一会儿。

    完成以后,再输入mingw32-make.exe install

    image-20231024014915908

    在这里插入图片描述

    完成后,来到install文件夹。

    在这里插入图片描述

    这样就编译好了。

    主要是要用到这些文件。

    Qt5.15.0 编译得到

    “C:\Program Files (x86)\KDChart\bin\libkdchart3.dll”

    “C:\Program Files (x86)\KDChart\lib\libkdchart3.dll.a”

    “C:\Program Files (x86)\KDChart\include\KDChart”

    Qt6.x 编译得到

    “C:/Program Files (x86)/KDChart/lib/libkdchart-qt63.dll.a”
    “C:/Program Files (x86)/KDChart/bin/libkdchart-qt63.dll”

    “C:/Program Files (x86)/KDChart/include/KDChart”

    四、使用

    把编译好的头文件,库文件保存到工程目录下。

    debug的库文件是(libkdchart3d.dll、libkdchart3d.dll.a)/(我没编debug)

    release的库文件是(libkdchart3.dll、libkdchart3.dll.a)/(libkdchart-qt63.dll、libkdchart-qt63.dll.a)

    我们新建一个Qt项目,运行一下。

    测试方法一:

    把对应版本的文件放到工程目录下。

    然后再.pro文件中添加这些头文件和库。

    抄一段官方文档给的例子。https://docs.kdab.com/kdchart/latest/

    #include "mainwindow.h"
    #include 
    #include 
    
    int main(int argc, char *argv[]){
        QApplication a(argc, argv);		// 创建应用程序对象
    
        MainWindow w;// 创建主窗口对象
        w.show();    // 显示主窗口
    
        KDChart::Widget widget;    // 创建KDChart部件对象
        widget.resize( 600, 600 );    // 设置部件大小
    
        QVector< qreal > vec0, vec1, vec2;    // 创建三个数据集的容器
        vec0 << -5 << -4 << -3 << -2 << -1 << 0 << 1 << 2 << 3 << 4 << 5;    // 向vec0添加数据点
        vec1 << 25 << 16 << 9 << 4 << 1 << 0 << 1 << 4 << 9 << 16 << 25;    // 向vec1添加数据点
        vec2 << -125 << -64 << -27 << -8 << -1 << 0 << 1 << 8 << 27 << 64 << 125;    // 向vec2添加数据点
    
        widget.setDataset( 0, vec0, "Linear" );    // 将vec0与标签"Linear"关联,并添加到部件中
        widget.setDataset( 1, vec1, "Quadratic" );    // 将vec1与标签"Quadratic"关联,并添加到部件中
        widget.setDataset( 2, vec2, "Cubic" );    // 将vec2与标签"Cubic"关联,并添加到部件中
    
        widget.show();    // 显示曲线图部件
    
        return a.exec();    // 启动应用程序的事件循环
    }
    
    • 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

    运行。

    测试方法二:

    • 使用Qt Creator打开下载的KDChart源码的官方例子KDChart-kdchart-3.0\tests\Gantt\apireview

      image-20231024232748587

    在Qt Creator打开CMakeLists.txt,补充如下:

    ##
    # This file is part of the KD Chart library.
    #
    # SPDX-FileCopyrightText: 2019-2023 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
    #
    # SPDX-License-Identifier: MIT
    #
    # 指定所需的最低CMake版本为3.5
    cmake_minimum_required(VERSION 3.5)
    
    #定义项目名称为18qt6-cmake,指定项目版本为0.1,使用的编程语言为C++project(Ganttapireview-manual-test VERSION 0.1 LANGUAGES CXX)
    
    set(CMAKE_AUTOUIC ON)   #启用自动UI编译
    set(CMAKE_AUTOMOC ON)   #启用自动MOC(Meta-Object Compiler)
    set(CMAKE_AUTORCC ON)   #启用自动RCC(Resource Compiler)
    
    set(CMAKE_CXX_STANDARD 11) #设置C++标准为C++11
    
    #要求使用指定的C++标准
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    
    # 指定要链接的动态库的路径
    link_directories("C:/Program Files (x86)/KDChart/lib/")
    
    
    #查找Qt库,并指定需要的组件为Widgets。它会根据可用的Qt版本自动查找并设置Qt变量
    find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets PrintSupport)
    
    #根据主要Qt版本号查找并设置所需的Qt Widgets组件
    find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets PrintSupport)
    
    #定义项目源文件列表
    set(PROJECT_SOURCES
        entrydelegate.cpp
        entrydialog.cpp
        entrydialog.ui
        main.cpp
        mainwindow.cpp
        mainwindow.ui
    )
    
    #如果Qt主要版本大于等于6,则使用qt_add_executable创建目标
    if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
        qt_add_executable(Ganttapireview-manual-test
            MANUAL_FINALIZATION
            ${PROJECT_SOURCES}
        )
    # 否则,根据不同的平台和Qt版本使用add_library或add_executable创建目标
    else()
        #安卓
        if(ANDROID)
            add_library(Ganttapireview-manual-test SHARED
                ${PROJECT_SOURCES}
            )
    # 在Qt 5中定义find_package()调用后的Android属性:
    #    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
        else()
            add_executable(Ganttapireview-manual-test
                ${PROJECT_SOURCES}
            )
        endif()
    endif()
    
    #将Qt Widgets库链接到目标
    target_link_libraries(Ganttapireview-manual-test
        PRIVATE Qt${QT_VERSION_MAJOR}::Widgets
        Qt${QT_VERSION_MAJOR}::PrintSupport
        # 生成的库名称
        kdchart-qt63
        #kdchart
        #testtools
    )
    
    # 要链接的动态库的头文件include路径添加到目标文件中
    target_include_directories(Ganttapireview-manual-test
        PRIVATE "C:/Program Files (x86)/KDChart/include/KDChart-qt6")
    
    #设置目标属性,如MacOSX Bundle标识符、版本等
    set_target_properties(Ganttapireview-manual-test PROPERTIES
        MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
        MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
        MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
        MACOSX_BUNDLE TRUE
        WIN32_EXECUTABLE TRUE
    )
    
    #安装目标文件
    install(TARGETS Ganttapireview-manual-test
        BUNDLE DESTINATION .
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
    
    #如果主要Qt版本为6,则使用qt_finalize_executable完成目标的最终设置
    if(QT_VERSION_MAJOR EQUAL 6)
        qt_finalize_executable(Ganttapireview-manual-test)
    endif()
    
    • 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
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96

    构建,选择Release/Debug运行(根据生成的库)

    • 甘特图
    image-20231024232332368
  • 相关阅读:
    canvas
    Bean注解总结
    工业品数字化采购发展趋势分析,采购系统赋能企业采购业务智慧升级
    ubuntu22.04远程控制桌面的工具
    final关键字
    drf的JWT认证
    一款功能强大的web目录扫描器专业版
    BUU-pwn(五)
    护眼灯什么颜色的灯光好?2022年平价护眼台灯推荐
    Vue组件
  • 原文地址:https://blog.csdn.net/qq_47355554/article/details/134024545