IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MacOS下 Qt6编译及链接MySQL -> 正文阅读

[大数据]MacOS下 Qt6编译及链接MySQL


一、 本文使用系统环境

系统架构:arm64架构 + intel 架构
Qt版本:6.2.2 (安装时务必勾选源码)
MySQL版本: 8.0.29

二、下载MySQL

可选方式 :

  1. 官网下载对应dmg,根据不同架构选择不同的版本
    在这里插入图片描述
    安装pkg即可,在最后需设置环境变量
export PATH=${PATH}:/usr/local/mysql/bin
  1. homebrew 安装 ,homebrew配置教程见该文章
    终端执行如下代码
brew install mysql

等待安装完成后验证mysql版本

mysql --version

在这里插入图片描述
使用where命令查询mysql的位置

where mysql

使用which命令查询当前使用的mysql可执行程序位置

which mysql

homebrew需使用的库的位置如下
/opt/homebrew/Cellar/mysql/8.0.29/lib/libmysqlclient.dylib

三、安装cmake

通过homebrew安装
使用如下命令

homebrew install cmake

四、编译mysql

  1. 开启新的终端以始上述环境变量生效

  2. 终端创建编译目录

mkdir build-sqldrivers
cd build-sqldrivers
mkdir build
cd build
  1. 继续执行cmake识别命令 注意,请根据以下指令填入你的qt源码路径、qt识别路径、mysql include 目录 mysql lib目录,
 cmake -G "Unix Makefiles" \
 /Users/xxx/Qt6.2.2/6.2.2/Src/qtbase/src/plugins/sqldrivers \
 -DCMAKE_PREFIX_PATH=/Users/xxx/Qt/Qt6.2.2/6.2.2/macos \
 -DCMAKE_INSTALL_PREFIX=../ \
 -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" \
 -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.dylib"

正常识别成功如图所示
在这里插入图片描述
3. 执行如下命令以进行编译

cmake --build .

此时intel下能正常编译成功,m1编译失败(待补充解决方案,本人已解决)
在这里插入图片描述
4. 执行安装命令

 cmake --install .

此时目录结构如图所示
在这里插入图片描述
5. 拷贝lib/cmake/Qt6Sql中的关于MySQL的cmkae识别文件至/Users/xxxx/Qt6.2.2/6.2.2/macos/lib/cmake/Qt6Sql
在这里插入图片描述
6.拷贝plugins/sqldrivers/libqsqlmysql.dylib动态库文件至/Users/xxxx/Qt6.2.2/6.2.2/macos/plugins/sqldrivers
在这里插入图片描述

五、测试mysql

新建一个cmake工程
cmkaelist如下代码所示
注意加入Sql在如下代码中

find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets Sql REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets Sql 
target_link_libraries(untitled PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Sql)

完整cmakelist.txt

cmake_minimum_required(VERSION 3.5)

project(untitled VERSION 0.1 LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets Sql REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets Sql REQUIRED)

set(PROJECT_SOURCES
        main.cpp
        widget.cpp
        widget.h
        widget.ui
)

if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    qt_add_executable(untitled
        MANUAL_FINALIZATION
        ${PROJECT_SOURCES}
    )
# Define target properties for Android with Qt 6 as:
#    set_property(TARGET untitled APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
#                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
else()
    if(ANDROID)
        add_library(untitled SHARED
            ${PROJECT_SOURCES}
        )
# Define properties for Android with Qt 5 after find_package() calls as:
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
    else()
        add_executable(untitled
            ${PROJECT_SOURCES}
        )
    endif()
endif()

target_link_libraries(untitled PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Sql)

set_target_properties(untitled 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}
)

if(QT_VERSION_MAJOR EQUAL 6)
    qt_finalize_executable(untitled)
endif()

在main函数替换如下代码进行测试

#include <QApplication>
#include <QSqlDatabase>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    qDebug()<<"available drivers:";
        QStringList drivers = QSqlDatabase::drivers();
        foreach(QString driver, drivers)
            qDebug()<<driver;

    return a.exec();
}

运行结果如图所示,已支持QMYSQL
在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-25 11:38:09  更:2022-05-25 11:39:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:22:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码