【QT+QGIS跨平台编译】之一:【sqlite+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

news2025/1/11 1:20:31

文章目录

  • 一、sqlite3介绍
  • 二、文件下载
  • 三、文件分析
  • 四、pro文件
  • 五、编译实践

一、sqlite3介绍

SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。

     SQLite特性:

①不需要一个单独的服务器进程或操作的系统( 无服务器 的)。
②SQLite 不需要配置,这意味着 不需要安装或管理 。
③ 一个完整的 SQLite 数据库是存储在一个 单一的跨平台的磁盘文件 。
④SQLite 是非常小的,是 轻量级 的,完全配置时小于 400KiB ,省略可选功能配置时小于 250KiB 。
⑤SQLite 是 自给自足 的,这意味着不需要任何外部的依赖。
⑥SQLite 事务是 完全兼容 ACID 的,允许从多个进程或线程安全访问。
⑦SQLite 支持 SQL92 ( SQL2 )标准的大多数查询语言的功能。
⑧SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API 。
⑨SQLite 可在 UNIX ( Linux, Mac OS-X, Android, iOS )和 Windows ( Win32, WinCE, WinRT )中运行,具备 跨平台 特性。


二、文件下载

sqlite网址:
https://www.sqlite.org/index.html
在这里插入图片描述
在这里插入图片描述
获取sqlite-autoconf-3390400.tar.gz、sqlite-dll-win64-x64-3390400.zip文件。


三、文件分析

解压缩sqlite-autoconf-3390400.tar.gz、sqlite-dll-win64-x64-3390400.zip文件。

在sqlite-autoconf-3390400文件夹,文件信息:
在这里插入图片描述

头文件与源文件:

在这里插入图片描述

解压缩sqlite-dll-win64-x64-3390400.zip

拷贝sqlite3.def


四、pro文件

配置头文件:

#头文件
HEADERS +=  sqlite3.h \
            sqlite3ext.h

配置源文件:

#源文件
SOURCES +=  sqlite3.c

导出的模块文件:

win32 {
    DEF_FILE = sqlite3.def
}

设置预定义项:

DEFINES -= UNICODE
DEFINES += SQLITE_ENABLE_COLUMN_METADATA SQLITE_ENABLE_PREUPDATE_HOOK
DEFINES += SQLITE_ENABLE_FTS3 SQLITE_ENABLE_FTS3_PARENTHESIS SQLITE_ENABLE_FTS5
DEFINES += SQLITE_ENABLE_RTREE SQLITE_ENABLE_JSON1 SQLITE_ENABLE_SESSION
DEFINES += SQLITE3_EXPORTS SQLITE_HAS_CODEC
DEFINES += CODEC_TYPE=CODEC_TYPE_AES128 SQLITE_CORE

win32 {
    DEFINES += _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE
}

形成001.sqlite-3.39.4.pro文件:

QT += core

TEMPLATE = lib
CONFIG += c++17

DESTDIR = ../QGIS
CONFIG(debug, debug|release){
    MOC_DIR = ../build-QGIS/sqlite3/Debug/moc
    RCC_DIR = ../build-QGIS/sqlite3/Debug/rcc
    UI_DIR = ../build-QGIS/sqlite3/Debug/ui
    OBJECTS_DIR = ../build-QGIS/sqlite3/Debug/obj
}else{
    MOC_DIR = ../build-QGIS/sqlite3/Release/moc
    RCC_DIR = ../build-QGIS/sqlite3/Release/rcc
    UI_DIR = ../build-QGIS/sqlite3/Release/ui
    OBJECTS_DIR = ../build-QGIS/sqlite3/Release/obj
}

CONFIG(debug, debug|release){
    TARGET = sqlite3d
}else{
    TARGET = sqlite3
}
DEFINES -= UNICODE
DEFINES += SQLITE_ENABLE_COLUMN_METADATA SQLITE_ENABLE_PREUPDATE_HOOK
DEFINES += SQLITE_ENABLE_FTS3 SQLITE_ENABLE_FTS3_PARENTHESIS SQLITE_ENABLE_FTS5
DEFINES += SQLITE_ENABLE_RTREE SQLITE_ENABLE_JSON1 SQLITE_ENABLE_SESSION
DEFINES += SQLITE3_EXPORTS SQLITE_HAS_CODEC
DEFINES += CODEC_TYPE=CODEC_TYPE_AES128 SQLITE_CORE

win32 {
    DEFINES += _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE
}

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

#当前目录
INCLUDEPATH += ./

#头文件
HEADERS +=  sqlite3.h \
            sqlite3ext.h

#源文件
SOURCES +=  sqlite3.c

win32 {
    DEF_FILE = sqlite3.def
}

# Default rules for deployment.
#unix {
#    target.path = /usr/lib
#}
#!isEmpty(target.path): INSTALLS += target

五、编译实践

用QtCreator程序,打开001.sqlite-3.39.4.pro文件。

在这里插入图片描述

在windows下编译,形成:
在这里插入图片描述

在linux下编译,形成:

在这里插入图片描述

在macos下编译,形成:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1402002.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MSVS C# Matlab的混合编程系列2 - 构建一个复杂(含多个M文件)的动态库:

前言: 本节我们尝试将一个有很多函数和文件的Matlab算法文件集成到C#的项目里面。 本文缩语: MT = Matlab 问题提出: 1 我们有一个比较复杂的Matlab文件: 这个MATLAB的算法,写了很多的算法函数在其他的M文件里面,这样,前面博客的方法就不够用了。会报错: 解决办法如下…

[学习笔记]刘知远团队大模型技术与交叉应用L3-Transformer_and_PLMs

RNN存在信息瓶颈的问题。 注意力机制的核心就是在decoder的每一步,都把encoder的所有向量提供给decoder模型。 具体的例子 先获得encoder隐向量的一个注意力分数。 注意力机制的各种变体 一:直接点积 二:中间乘以一个矩阵 三:…

Opncv模板匹配 单模板匹配 多模板匹配

目录 问题引入 单模板匹配 ①模板匹配函数: ②查找最值和极值的坐标和值: 整体流程原理介绍 实例代码介绍: 多模板匹配 ①定义阈值 ②zip函数 整体流程原理介绍 实例代码: 问题引入 下面有请我们的陶大郎登场 这张图片是我们的陶大郎,我们接下来将利用陶大郎来介绍…

恒悦sunsite博客2023年总结及2024年展望

一、2023年总结 一年如一日的坚持做好一件事并不是容易的事情,但是只要我们坚持下去,乘风破浪会有时,直挂云帆济沧海。   2023年是意义非凡的一年,年初的时候自己定下了两个目标:第一个是完成博客专家认证&#xff1…

HarmonyOS鸿蒙应用开发 (一、环境搭建及第一个Hello World)

万事开头难。难在迈出第一步。心无旁骛,万事可破。没有人一开始就能想清楚,只有做起来,目标才会越来越清晰。--马克.扎克伯格 前言 2024年1月16日,华为目前开启已HarmonyOS NEXT开发者预览版Beta招募,报名周期为1月15…

做好销售人员激励的3个要诀

企业合并是企业发展的重要战略手段之一。许多成长中的企业在经过一段时间的积累后,为了获得快速成长,实现规模效应,通常会采用合并的手段实现目标,同时企业会制定新型政策规范企业管理。但是在制定政策之前,企业通常会…

到店商详架构变迁

一、项目背景 到店商详是平台为京东到店业务提供的专属商详页面,将传统电商购物路径打造成以LBS门店属性的本地生活服务交易链路。 二、架构变迁 1、 主站商详扩展点 **优点:**到店侧仅关注业务,无需过度关注服务部署、性能优化等。 **缺…

Java实现大学计算机课程管理平台 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 实验课程档案模块2.2 实验资源模块2.3 学生实验模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 实验课程档案表3.2.2 实验资源表3.2.3 学生实验表 四、系统展示五、核心代码5.1 一键生成实验5.2 提交实验5.3 批阅实…

数字IC笔试题——门控时钟与控制信号电平、与门门控、或门门控、上升沿门控、下降沿门控

门控时钟问题。 (华为-2019-芯片-数字-34) 从后端设计考虑,在必须使用门控时钟的时候,需要遵循一个原则:门控时钟的输出只能跟着时钟信号进行跳变,而不能跟着控制信号进行跳变,也就是说对于用N…

【订单领域】如果订单要分库分表,如何确认最佳库表数量?

🎉欢迎来系统设计专栏:如果订单要分库分表,如何确认最佳库表数量? 📜其他专栏:java面试 数据结构 源码解读 故障分析 🎬作者简介:大家好,我是小徐🥇☁️博客首页&#x…

python-分享篇-draw heart

文章目录 heart代码效果 draw-heart代码效果 heart-shape-chart代码效果 heart-stitching-by-string代码效果 love-you代码效果 heart 代码 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3Ddef heart_3d(x,y,z):return (x**2(9…

用友NC portal/file 任意文件读取漏洞复现

0x01 产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具,用友NC提供了一系列业务管理模块,包括财务会计、采购管理、销售管理、物料管理、生产计划和人力资源管理等,帮助企业实现数字化转型和高效管理。 0x02 漏洞概述 用友NC 系统 /portal/file等接口存在任意…

文心一言4.0参数配置

链接:百度智能云千帆大模型平台 文心一言API使用教程(python版)_python_蓝桉155-百度飞桨星河社区 检查代码的逻辑错误:# 定义一个后台进程类,继承自subprocess.Popen class BackgroundProcess(subprocess.Popen): d…

2023年12月青少年机器人技术等级考试(四级)理论综合试卷

2023年12月青少年机器人技术等级考试(四级)理论综合试卷 单选题 第 1 题 单选题 Arduino UNO/Nano主控板,当数字引脚输出信号为高电平时,对应的电压是 ?( ) A.0V B.5V C.-0.5 ~ 1.5V D.3…

数据结构之顺序表的增删查改

别丢了你的勇敢 前言: 自今日起,我们正式越过C语言的大山,走向了数据结构的深山,现如今摆在我们面前的第一个坎就是顺序表,我们需要了解顺序表的定义,并且知道,如何对其进行增删查改&#xff0…

欧科云链与《警察技术》联合发布技术专题.pdf

欧科云链受《警察技术》邀请,于第201期期刊正式刊登“区块链生态安全与虚拟货币犯罪治理”技术专题。欧科云链作为该技术专题主要作者,直接参与本次期刊2篇文章撰写,同时为多篇文章提供欧科云链的最新数据和研究成果。 《警察技术》期刊创办于…

HuoCMS|免费开源可商用CMS建站系统HuoCMS 2.0下载(thinkphp内核)

HuoCMS是一套基于ThinkPhp6.0Vue 开发的一套HuoCMS建站系统。 HuoCMS是一套内容管理系统同时也是一套企业官网建设系统,能够帮过用户快速搭建自己的网站。可以满足企业站,外贸站,个人博客等一系列的建站需求。HuoCMS的优势: 可以使用统一后台…

x-cmd pkg | yq - 命令行 YAML处理工具

目录 简介首次用户支持格式转换友好的显示和操作语法与 jq 类似竞品和相关作品进一步阅读 简介 yq (YAML Query) 是一个轻量级的 YAML、JSON、XML 处理器,主要用于查询和提取 YAML 数据。 本 yq 的包来自 mikefarah/yq 项目,语法类似于 jq 。相比 kisly…

【Python】使用Anaconda创建PyTorch深度学习虚拟环境

使用Anaconda Prompt 查看环境: conda env list 创建虚拟环境(python3.10): conda create -n pytorch python3.10 激活创建的环境: conda activate pytorch在虚拟环境内安装PyTorch: 【Python】CUDA11.7/11.8安…