KDChart3.0编译过程-使用QT5.15及QT6.x编译
文章目录
- 参考原文
- 一、下载KDChart源文件
- 二、下载安装CMake
- 三、编译
- Qt5.15.0 编译
- Qt6.x 编译
- 使用Qt6.X编译的直接看这最快
- 四、使用
- 测试方法一:
- 测试方法二:
参考原文
记录我的KDChart3.0编译过程
系统:win11,Qt5.15 ,编译器mingw 64位
版权声明:本文为博主原创文章,遵循 CC 4.0
BY-SA
版权协议,转载请附上原文出处链接和本声明。
注意,KDChart3.0要求QT5.15及以上版本
- 本文使用Qt6.4.3编译,使用QT5.15建议阅读记录我的KDChart3.0编译过程
- 如果无法阅读,本文也有QT5.15编译。
一、下载KDChart源文件
打开官网https://www.kdab.com/development-resources/qt-tools/kd-chart/
拉到最下面,
- 下载源文件,然后解压。

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

中文版
这些是使用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 build2)现在根据所需的构建类型运行'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_PATH5)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 # Windows7)(可选:)安装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环境变量。
二、下载安装CMake
注意:
如果使用Qt6.x 编译,可以不用安装,Qt6自带CMake,还不用配置!(直接看
三、编译 -> Qt6.x 编译)
CMake下载https://cmake.org/download/
我根据自己的系统选了安装版。
安装时基本都默认设置。可以把桌面图标勾上。

三、编译
我们先创建两个文件夹,用来放cmake编译文件。
我把文件夹放在kdchart源文件下面了。
接着打开刚安装的cmake。

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

点击Configure。

选择编译器,并指定本地目录。
要选择Qt安装目录下的编译器地址。
点击Finish,提示找不到文件。
Qt5.15.0 编译
消息框提示,这两个文件找不到。这个文件是在安装目录下的这个位置。注意地址里的编译器版本。

把地址填到CMake软件中的Qt5_DIR这项,
然后再点Configure。依然报错,这次少了Qt5sql。

填入地址,

再点Configure。这次窗口不红了,不报错了。
Qt6.x 编译
- 没有找到 Qt6Config.cmake qt6-config.cmake,填写Qt6_DIR,再点Configure
- 没有找到 Qt6CoreToolsConfig.cmake qt6coretools-config.cmake;填写Qt6GuiTools_DIR,再点Configure
CMake:允许设置 Qt6_DIR 在不交叉编译时查找包
解决办法:
1.设置Qt6_close不足以查找Qt包
2.c++ CMake在Qt6安装中找不到软件包
还有一篇文章使用方法是:
设置
QT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH
QT_ADDITIONAL_PACKAGES_PREFIX_PATH
![]()
但是我没有成功
使用Qt6.X编译的直接看这最快
-
直接使用QT6自带的cmake-gui(QT\6.x\Tools\CMake_64\bin\cmake-gui)
先点击Configure,不报错,点击Generate。
选择需要的build版本(debug或release)。我这次选择release的(debug版本已经编译过了)。

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

改好后,点击Generate。

成功了。

以管理员身份打开CMD窗口,cd到刚才的build文件夹。
切换到非C盘,如F盘:
C:\> F:
F:\> cd xxx
输入命令 mingw32-make.exe
这里一定是mingw32,不要因为是64位编译器就填64了。

按回车。编译蛮久的,等一会儿。
完成以后,再输入mingw32-make.exe install

完成后,来到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 <QApplication>
#include <KDChartWidget>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(); // 启动应用程序的事件循环
}
运行。
测试方法二:
-
使用Qt Creator打开下载的KDChart源码的官方例子KDChart-kdchart-3.0\tests\Gantt\apireview
在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_SOURCESentrydelegate.cppentrydialog.cppentrydialog.uimain.cppmainwindow.cppmainwindow.ui
)#如果Qt主要版本大于等于6,则使用qt_add_executable创建目标
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)qt_add_executable(Ganttapireview-manual-testMANUAL_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-testPRIVATE Qt${QT_VERSION_MAJOR}::WidgetsQt${QT_VERSION_MAJOR}::PrintSupport# 生成的库名称kdchart-qt63#kdchart#testtools
)# 要链接的动态库的头文件include路径添加到目标文件中
target_include_directories(Ganttapireview-manual-testPRIVATE "C:/Program Files (x86)/KDChart/include/KDChart-qt6")#设置目标属性,如MacOSX Bundle标识符、版本等
set_target_properties(Ganttapireview-manual-test PROPERTIESMACOSX_BUNDLE_GUI_IDENTIFIER my.example.comMACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}MACOSX_BUNDLE TRUEWIN32_EXECUTABLE TRUE
)#安装目标文件
install(TARGETS Ganttapireview-manual-testBUNDLE DESTINATION .LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})#如果主要Qt版本为6,则使用qt_finalize_executable完成目标的最终设置
if(QT_VERSION_MAJOR EQUAL 6)qt_finalize_executable(Ganttapireview-manual-test)
endif()
构建,选择Release/Debug运行(根据生成的库)
- 甘特图

相关文章:
KDChart3.0编译过程-使用QT5.15及QT6.x编译
文章目录 参考原文一、下载KDChart源文件二、下载安装CMake三、编译Qt5.15.0 编译Qt6.x 编译使用Qt6.X编译的直接看这最快 四、使用测试方法一:测试方法二: 参考原文 记录我的KDChart3.0编译过程 系统:win11,Qt5.15 ,编…...
一、PHP环境搭建[phpstorm]
一、安装 1.php编写工具 地址:https://www.jetbrains.com/phpstorm/download/#sectionwindows 图示: 2.php环境 解释:建议使用phpstudy进行安装,安装较为简单 链接:https://www.xp.cn/ 图示: 二、第…...
光影之梦2:动画渲染前后对比,揭示视觉艺术的惊人转变!
动画渲染是影视艺术中不可或缺的一环,它赋予了角色和场景鲜活的生命。渲染过程中的光影、色彩、材质等元素,像是画家的调色板,将平淡无奇的线条和形状转化为充满韵味与情感的画面。动画角色仿佛拥有了自己的灵魂,无论是一颦一笑&a…...
pytorch_lightning:Validation sanity check: 0%| | 0/2 [00:00<?, ?it/s]
在使用Lighting架构辅助训练时,对于出现的下述情况的原因: 解释: 注意到“ Validation sanity check ”。这是因为Lightning在开始训练之前进行了两批验证。这是一种单元测试,以确保如果你在验证循环中有一个bug,你不…...
2、Linux权限理解
个人主页:Lei宝啊 愿所有美好如期而遇 目录 前言 Linux权限的概念 1.文件访问者的分(人) 2.文件类型和访问权限(事物属性) 3.文件权限值的表示方法 4.文件访问权限的相关设置方法 file指令 目录的权限 粘滞位 关于权限的总结 前言 在开始Linux权限理…...
Linux 通过 sed 命令过滤指定日期的日志文件并输出到新文件
sed -n /2023-10-18T09:00:00/,/2023-10-18 12:00:00/p mysql_slow.log > out.log...
景联文科技:针对敏感数据的安全转录服务,护航信息安全
针对数据的安全转录服务,主要是为了确保数据在转录过程中的安全性和隐私保护。这些服务通常会采用一系列严格的安全措施,如数据加密、访问控制、数据脱敏等,以确保敏感数据不会被泄露或滥用。 景联文科技提供特定的数据转录服务,以…...
Excel宏(VBA)自动化标准流程代码
自动化流程 我们对一个报表进行自动化改造会经历的固定流程,这里称为“流水线”,通常包含以下流程: 打开一个表格选择打开的表格选择表格中的Sheet选择Sheet中的单元格区域 (有时候需要按条件筛选)复制某个区域 粘贴…...
vue vue3开发 vue2和vue3的选择
现在vue新建项目,官方给出的命令是 npm create vuelatest项目默认vue3,他是不支持IE11 如果想支持IE11用下面方法,项目vue2.7.7 npm create vuelegacy他们的打包工具默认vite,不是webpack。老手要注意生成的项目中的示例组件使…...
华为OD 数列描述(100分)【java】A卷+B卷
华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应往年部分考题以及新出的题目。 我将持续更新最新题目 我精选了一部分题目免费分享给大家,可前往夸克网盘转存,请点击以下链接进入: 我用夸克网盘分享了「华为OD题库J…...
μCOS-Ⅲ中断管理,这样理解非常简单!
μCOS-Ⅲ中断管理,这样理解非常简单! 文章目录 μCOS-Ⅲ中断管理,这样理解非常简单!前言一、中断源与中断优先级二、μCOS-Ⅲ的中断管理方式三、中断屏蔽与中断控制1、μCOS-Ⅲ中断开关2、μCOS-Ⅲ中断屏蔽应用——临界区4、μCOS…...
Vue 项目进行 SEO 优化
SSR 服务器渲染 服务端渲染, 在服务端 html 页面节点, 已经解析创建完了, 浏览器直接拿到的是解析完成的页面解构 关于服务器渲染:Vue 官网介绍 ,对 Vue 版本有要求,对服务器也有一定要求,需要支持 nodejs 环境。 优势: 更好的 …...
【C++入门篇】保姆级教程篇【上】
目录 一、第一个C程序 二、C命名空间 1)什么是命名空间? 2)命名空间的使用 3) std库与namespace展开 4)命名空间的嵌套使用 三、输入输出方式 四、缺省参数 1)什么是缺省参数? 2࿰…...
用傲梅分区软件分割分区重启系统蓝屏BAD_SYSTEM_CONFIG_INFO,八个解决参考方案
环境: Win11 专业版 HP 笔记本 傲梅分区软件 闪迪16G U盘 Win10 官方镜像文件 Win11PE 系统安装U盘 USB固态硬盘盒 问题描述: 起因 开始使用windows自动磁盘管理工具压缩不了磁盘,提示无法将卷压缩到超出任何不可移动的文件所在点,关闭系统保护还原,删除系统创建…...
7-1、S曲线加减速原理【51单片机控制步进电机-TB6600系列】
摘要:本节介绍步进电机S曲线相关内容,总共分四个小节讨论步进电机S曲线相关内容 根据上节内容,步进电机每一段的速度可以任意设置,但是每一段的速度都会跳变,当这个跳变值比较大的时候,电机会发生明显的…...
golang 通過ssh連接遠程服務器 控制
1.下載依賴 go get golang.org/x/crypto/ssh 2.import import ("fmt""log""time""golang.org/x/crypto/ssh" )3.使用 func pwdConnect(sshHost, sshUser, sshPassword string, sshPort int) (*ssh.Client, error) {// 创建ssh登录…...
Python深度学习实战-基于tensorflow.keras六步法搭建神经网络(附源码和实现效果)
实现功能 第一步:import tensorflow as tf:导入模块 第二步:制定输入网络的训练集和测试集 第三步:tf.keras.models.Sequential():搭建网络结构 第四步:model.compile():配置训练方法 第五…...
单片机核心/RTOS必备 (ARM汇编)
ARM汇编概述 一开始,ARM公司发布两类指令集: ARM指令集,这是32位的,每条指令占据32位,高效,但是太占空间。Thumb指令集,这是16位的,每条指令占据16位,节省空间。 要节…...
2023/10/25
如果你越来越冷漠 你以为你成长了 但其实没有 长大应该是变得温柔 对全世界都温柔...
如何做一个无符号数识别程序
1.状态分析 我们可以把无符号数分为:整数,带小数,带指数部分三种形式。以此构建一个DFA。首先需识别输入是整数还是小数点,若是整数部分输入然后还要再循环识别一次是否有小数点,最后识别是否有指数部分,指…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
