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。首先需识别输入是整数还是小数点,若是整数部分输入然后还要再循环识别一次是否有小数点,最后识别是否有指数部分,指…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
数据库——redis
一、Redis 介绍 1. 概述 Redis(Remote Dictionary Server)是一个开源的、高性能的内存键值数据库系统,具有以下核心特点: 内存存储架构:数据主要存储在内存中,提供微秒级的读写响应 多数据结构支持&…...
GraphRAG优化新思路-开源的ROGRAG框架
目前的如微软开源的GraphRAG的工作流程都较为复杂,难以孤立地评估各个组件的贡献,传统的检索方法在处理复杂推理任务时可能不够有效,特别是在需要理解实体间关系或多跳知识的情况下。先说结论,看完后感觉这个框架性能上不会比Grap…...
