Windows环境下编译Serial-Studio

Serial-Studio是一个开源的串口数据可视化工具,广泛应用于物联网、嵌入式系统调试和数据分析等领域。从源代码编译Serial-Studio可以让您获取最新功能、进行自定义修改,或在特定环境下部署。本指南将提供在Windows操作系统下从零开始编译Serial-Studio的详细步骤,并对每一个命令的含义和作用进行深入剖析。

1. 编译环境准备

在开始编译之前,我们需要确保系统中安装了所有必需的软件和工具。

1.1 安装 Chocolatey (Windows 包管理器)

Chocolatey 是一个强大的Windows命令行包管理器,它能极大地简化软件的安装、更新和卸载过程。我们使用它来安装 Git 和其他可能的依赖。

  1. 打开 PowerShell (管理员权限):

    • 在Windows搜索栏中输入 "PowerShell",然后右键点击 "Windows PowerShell" 或 "终端",选择 "以管理员身份运行"。这是因为安装系统级的包管理器需要提升权限。
  2. 设置执行策略:

    PowerShell

    Set-ExecutionPolicy Bypass -Scope Process -Force
    • 命令含义

      • Set-ExecutionPolicy: 这是 PowerShell 的一个核心 cmdlet(命令),用于设置脚本的执行策略。Windows 默认的安全设置可能不允许直接运行从互联网下载的脚本,以防止恶意软件。
      • Bypass: 这是一种执行策略,它会绕过所有安全检查,允许脚本执行,而不会有任何警告或提示。
      • -Scope Process: 指定该策略只在当前 PowerShell 进程中生效。这意味着当您关闭当前的 PowerShell 窗口后,系统会恢复到之前的执行策略,不会对系统范围造成永久性改变。
      • -Force: 强制应用此策略,即使有警告或确认提示也会自动接受。
    • 必要性: Chocolatey 的安装脚本是从互联网下载的,需要这个命令来暂时允许 PowerShell 执行这个脚本,否则安装会失败。
  3. 安装 Chocolatey:

    PowerShell

    irm https://community.chocolatey.org/install.ps1 | iex
    • 命令含义

      • irm (Invoke-RestMethod): 这是一个 PowerShell cmdlet,用于向 Web 服务发送 HTTP 请求并获取响应。在这里,它用于从 https://community.chocolatey.org/install.ps1 下载 Chocolatey 的安装脚本内容。
      • |: 这是 PowerShell 的管道操作符。它将 irm 命令的输出(即安装脚本的内容)传递给下一个命令。
      • iex (Invoke-Expression): 这是一个 PowerShell cmdlet,它会将一个字符串作为命令或表达式来执行。在这里,它接收管道传递过来的安装脚本内容,并将其作为 PowerShell 脚本执行。
    • 必要性: 这是 Chocolatey 官方推荐的安装方法,通过下载并执行其安装脚本来完成安装。

  4. 验证安装:

    PowerShell

    choco -v
    • 命令含义

      • choco: 这是 Chocolatey 的主命令。
      • -v: 这是 choco 命令的一个选项,用于显示 Chocolatey 的当前版本号。
    • 必要性: 运行此命令可以确认 Chocolatey 是否成功安装,并检查其版本。如果显示版本号,则说明 Chocolatey 已准备就绪。

1.2 安装 Git (版本控制工具)

Git 是一个分布式版本控制系统,Serial-Studio 的源代码托管在 GitHub 上,我们需要使用 Git 将其克隆(下载)到本地。

  1. 使用 Chocolatey 安装 Git

    choco install git -y
    • 命令含义

      • choco install: 这是 Chocolatey 的子命令,用于安装指定的软件包。
      • git: 这是要安装的软件包的名称,对应于 Git 版本控制系统。
      • -y: 这个选项表示“是”(Yes),它会自动确认所有安装提示,无需手动输入 y。这在自动化脚本中非常有用。
    • 必要性: Git 是下载项目源代码的唯一途径,Chocolatey 提供了一种简便的安装方式。

1.3 下载项目源代码

现在,我们可以使用 Git 将 Serial-Studio 的最新源代码下载到您的本地机器。

  1. 切换驱动器:

    Bash

    cd f:
    • 命令含义

      • cd: 这是“change directory”(改变目录)的缩写。
      • f:: 指定要切换到的目标驱动器。这里选择 F: 盘,您可以根据自己的实际情况选择其他驱动器。
    • 必要性: 将项目源代码存放在非系统盘(如 C: 盘)是一个良好的习惯,可以避免权限问题,并且通常不会影响系统性能。
  2. 创建项目目录:

    mkdir project
    • 命令含义

      • mkdir: 这是“make directory”(创建目录)的缩写。
      • project: 这是您要创建的新目录的名称。
    • 必要性: 创建一个专门的目录来存放所有开发项目,可以保持文件系统的整洁和组织性。
  3. 进入项目目录:

    cd project
    • 命令含义

      • cd project: 切换到刚刚创建的 project 目录中。
    • 必要性: git clone 命令会将仓库克隆到当前目录下,因此需要先进入目标目录。
  4. 克隆源代码:

    git clone https://github.com/Serial-Studio/Serial-Studio.git
    • 命令含义

      • git clone: 这是 Git 的一个核心命令,用于从远程仓库(GitHub)复制一个完整的版本库到本地。它会下载所有文件和项目的完整历史记录。
      • https://github.com/Serial-Studio/Serial-Studio.git: 这是 Serial-Studio 项目在 GitHub 上的 HTTPS 仓库地址。
    • 必要性: 这是获取 Serial-Studio 源代码的直接方式。执行此命令后,源代码将被下载到 F:\project\Serial-Studio 目录中。

1.4 安装 Qt (跨平台开发框架)

Qt 是一个流行的跨平台C++图形用户界面(GUI)应用程序开发框架,Serial-Studio 是基于 Qt 开发的。因此,编译 Serial-Studio 必须安装 Qt。

  1. 下载 Qt 安装程序:

    • 访问 Qt 官方下载地址:

      https://www.qt.io/download-qt-installer
    • 必要性: Qt 官方安装程序是获取 Qt 框架的推荐方式。

  2. 运行安装程序并选择组件:

    • 下载后运行安装程序。

    • 重要提示和必要性
      在安装过程中,会看到一个组件选择界面。务必选择以下关键组件:
      Qt 6.8.3
      MinGW
      MSVC
      CMake
      Ninja

1.5 安装 Visual Studio (C++ 开发环境)

尽管我们使用 MinGW 编译器,但 Visual Studio 提供了一些必要的 C++ 构建工具和库,这些可能在编译过程中被 CMake 发现和使用。

  1. 下载 Visual Studio 安装程序:

    • 访问 Visual Studio 官方网站(例如 Visual Studio 2022 Community)。
    • 必要性: 某些 C++ 项目可能依赖于 Visual Studio 提供的特定头文件或库,即使最终使用的是 MinGW 编译器。
  2. 运行安装程序并选择工作负载:

    • 在安装过程中,务必选择并安装

      "使用 C++ 的桌面开发 (Desktop development with C++)"

    • 必要性: 这个工作负载包含了编译 C++ 应用程序所需的核心编译器工具链、库文件、调试器和构建工具。它是确保 C++ 项目顺利编译的关键。

2. 配置环境变量

环境变量是操作系统中用来指定系统运行环境的一些参数。正确配置 PATH 环境变量,可以让系统在执行命令时自动找到对应的可执行文件,而无需输入完整的路径。

根据您的实际安装路径,将以下路径添加到系统环境变量 Path 中。在“系统属性”->“环境变量”中完成。

  • F:\Qt\6.8.3\mingw_64\bin

    : 这是 Qt 6.8.3 版本下 MinGW 64 位编译器的可执行文件目录。其中包含 qmake等 Qt 工具以及 MinGW 的 bin目录。

  • F:\Qt\6.8.3\msvc2022_64\bin

    : 这是 Qt 6.8.3 版本下 MSVC 2022 64 位编译器的可执行文件目录。如果使用 MSVC 编译器,则此路径很重要。

  • F:\Qt\6.8.3\android_x86_64\bin

    : 这是 Qt 6.8.3 版本下 Android x86_64 架构的可执行文件目录。虽然对于桌面应用编译并非必需,但如果进行 Android 开发,添加此路径会很方便。

  • F:\Qt\Tools\mingw1310_64\bin

    : 这是 MinGW 13.1.0 64 位编译器的独立安装目录(如果 Qt 安装器单独提供了这个工具)。这个路径包含 gcc.exe和g++.exe 等编译器核心可执行文件。

  • F:\Qt\Tools\CMake_64\bin

    : 这是 CMake 工具的安装目录。添加此路径后,可以在任何命令行位置直接运行 cmake命令。

  • F:\Qt\Tools\Ninja

    : 这是 Ninja 构建工具的安装目录。添加此路径后,可以直接运行 ninja命令。

  • F:\Qt\Tools\QtInstallerFramework\4.9\bin

    : 这是 Qt 安装框架工具的目录,可能包含一些用于打包或部署的工具。

  • C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64

    : 这是 Visual Studio 2022 Community 版中 MSVC C++ 编译器和相关工具链的路径。路径中的版本号(如 14.29.30133)可能因 Visual Studio 更新而有所不同,请务必根据实际的安装路径进行调整。

重要提示:

  • 添加或修改环境变量后,请关闭所有已打开的命令行或 PowerShell 窗口,然后重新打开。这是因为环境变量是在进程启动时加载的,现有进程不会自动感知到新的环境变量。

3. 执行编译

所有必要的工具和环境都已准备就绪,现在可以开始编译 Serial-Studio。

  1. 进入编译目录:

    Bash

    cd F:\project\Serial-Studio-master\Serial-Studio-master\build
    • 命令含义

      • cd: 切换目录。
      • F:\project\Serial-Studio-master\Serial-Studio-master\build: 这是 Serial-Studio 项目中用于存放构建文件和执行编译命令的目录。通常,一个项目会将源代码放在根目录,而将编译过程中产生的中间文件和最终的可执行文件放在一个独立的 build 目录中,以保持源代码的干净。
    • 必要性: CMake 和 Ninja 都会在当前目录下生成或查找构建文件,因此必须先进入正确的 build 目录。

  2. 执行 CMake 配置:

    cmake -G "Ninja" -DCMAKE_MAKE_PROGRAM=F:\Qt\Tools\Ninja\ninja.exe -DCMAKE_C_COMPILER=F:\Qt\Tools\mingw1310_64\bin\gcc.exe -DCMAKE_CXX_COMPILER=F:\Qt\Tools\mingw1310_64\bin\g++.exe -DCMAKE_PREFIX_PATH=F:\Qt\6.8.3\mingw_64 ..

    命令含义 如下:

    • cmake: 这是一个跨平台的构建系统生成器。它不直接编译代码,而是读取项目根目录下的 CMakeLists.txt 文件(项目构建规则),然后根据您指定的生成器来生成特定构建系统(如 Ninja、Visual Studio 解决方案、Makefile 等)所需的文件。

    • -G "Ninja": 指定 CMake 使用 "Ninja" 作为构建系统生成器。这意味着 CMake 会生成 build.ninja 文件以及其他 Ninja 所需的配置。Ninja 是一个轻量级、专注于速度的构建系统。

    • -DCMAKE_MAKE_PROGRAM=F:\Qt\Tools\Ninja\ninja.exe: 这是一个 CMake 变量设置。它明确告诉 CMake ninja 可执行文件的完整路径。这在 ninja 没有添加到系统 PATH 或系统中有多个 ninja 版本时尤其重要,确保 CMake 找到正确的构建工具。

    • -DCMAKE_C_COMPILER=F:\Qt\Tools\mingw1310_64\bin\gcc.exe: 这是一个 CMake 变量设置。它明确指定用于编译 C 语言源代码的编译器路径。这里指向的是 MinGW 的 gcc.exe。这确保 CMake 在配置项目时,使用您指定的 MinGW C 编译器。

    • -DCMAKE_CXX_COMPILER=F:\Qt\Tools\mingw1310_64\bin\g++.exe: 这是一个 CMake 变量设置。它明确指定用于编译 C++ 语言源代码的编译器路径。这里指向的是 MinGW 的 g++.exe。这确保 CMake 在配置项目时,使用您指定的 MinGW C++ 编译器。

    • -DCMAKE_PREFIX_PATH=F:\Qt\6.8.3\mingw_64: 这是一个 CMake 变量设置。它告诉 CMake 在哪里查找外部库和包。在这里,它指向 Qt 库的安装路径(特别是 MinGW 编译器的 Qt 版本)。CMake 会在此路径下搜索 Qt 的配置信息(如 Qt6Config.cmake),从而找到所有必需的 Qt 模块、头文件和库文件,以便正确地链接 Serial-Studio 对 Qt 的依赖。

    • ..: 这表示当前目录的父目录。在 build 目录中执行 cmake .. 意味着 CMake 会在 build 目录的上一级目录(即 F:\project\Serial-Studio-master\Serial-Studio-master,也就是 Serial-Studio 的源代码根目录)中查找 CMakeLists.txt 文件,这个文件定义了整个项目的构建规则。

    • 必要性: CMake 配置是编译的第一步。它分析项目的依赖关系、目标平台和编译器,并生成后续构建工具(Ninja)所需的指令,确保所有源文件都能被正确地编译和链接。

  3. 执行 Ninja 编译:

    Bash

    ninja
    • 命令含义

      • ninja: 这是 Ninja 构建工具的主命令。在 CMake 成功生成 build.ninja 文件后,ninja 命令会读取这些文件,并根据其中的指令执行实际的编译操作。它会调用 gcc/g++ 来编译各个源文件,然后调用链接器将编译后的对象文件合并成最终的可执行程序。
    • 必要性: ninja 是执行实际编译过程的命令。它负责并行化编译任务、管理文件依赖关系,并最终生成 Serial-Studio 的可执行文件。

4. 编译成功

ninja 命令执行完毕,并且命令行中没有显示任何致命错误信息,那么恭喜,Serial-Studio 已经成功编译完成!

编译生成的可执行文件通常位于您 build 目录的某个子目录中,我的在F:\project\Serial-Studio-master\Serial-Studio-master\build\app中。可以在这个目录中找到 Serial-Studio.exe并运行它。

双击 Serial-Studio.exe并运行结果

通过本指南的详细步骤和命令解析,希望能帮助您顺利完成 Serial-Studio 的编译过程,并更深入地理解其背后的构建机制。

5.异常处理

5.1 缺少QT组件

在安装QT时有些组件未安装,导致编译时失败报错

解决方法: 在开始菜单下找到Qt Maintenance Tool这个工具打开后即可添加需要则组件

在Qt维护工具中选择添加或移除组件的选项

搜索缺失的组件名称,勾选所对应版本需要安装的组件,点击下一步进行安装

5.2 运行时缺失dll文件

编译完成后在运行时缺失文件,大部分的情况时环境变量的配置问题,添加环境变量即可解决,如果无法解决可以采用方式二,便用windeployqt.exe部署工具将运行所需的文件复制到项目文件夹下,此两种方式能解决大多数的运行失败问题

解决方案一: 添加环境变量

解决方案二: 使用windeployqt.exe部等工具复制文件

  • windeployqt.exe;这是 Qt提供的部署工具。它会分析您指定的 Qt应用程序的可执行文件(Serlal-studio.exe),找出它所依赖的所有 QtDLLs、插件、翻译

    文件等。
  • windeploygt 会自动将所有必要的 Qt DLLs(包括 Qt6Core.dl, Qt6Gui.dl, Qt6widgets.dl, Qt6Bluetooth.d 等)、所需的插件目录(如 platforms,sqldrivers, bearer 等)和翻译文件复制到 Serial-studio.exe 所在的目录(F:projectiSerial-Studio\build\app).
   cd F:\Qt16.8.3\mingw_64\bin
windeployqt.exe F:\project\serial-studio\build\appiserial-studio.exe

全文完,请大家专注我们的B站视频号和微信公众号,如果对编译过程有疑问或者想与大家一起讨论开源软件的定制化,请大家加入我们的QQ群畅所欲言。

Serial-Studio 上位机编译全过程深度讲解,解决串口数据可视化工具的更多相关文章

  1. 2018最新mfc作为上位机接收硬件端USB或串口数据显示成图片 解决串口接收数据丢字节丢包问题

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9490616.html 本文用的是VS2013MFC写串口数据接收: 第一步:首先建立一个MFC ...

  2. 案例:中科院光机所应用大数据可视化工具-LightningChart | 见证高性能图表

    中国科学院上海光学精密机械研究所 中国现代光学和激光科学领域领先研究所 中国科学院上海光学精密机械研究所(简称中科院上海光机所)是我国建立最早.规模最大的激光专业研究所,成立于1964年,现已发展成为 ...

  3. caffe深度学习网络(.prototxt)在线可视化工具:Netscope Editor

    http://ethereon.github.io/netscope/#/editor 网址:http://ethereon.github.io/netscope/#/editor 将.prototx ...

  4. 用WindowsAppSDK(WASDK)优雅的开发上位机应用

    C#开发上位机应用的一些选择 如果你不想看介绍,可以直接跳到优雅开发示例那里. 1. WASDK(WinUI 3) Windows 应用 SDK 是一组新的开发人员组件和工具,它们代表着 Window ...

  5. 家居环境监測系统设计(PC上位机版)(手机APP版待定)

    下面是我的毕业设计:家居环境监測系统设计(PC上位机临时版.手机app版待定).本系统採用STC12C5A60S2单片机.结合传感器.分别对空气湿度.空气温度.气压.海拔.进水温度.出水温度.光照强度 ...

  6. 开源串口 Ymodem 上位机软件

    概述 上位机使用Qt开发,计划整合多个工具为一体,用作以后的调试工具. 当前完成功能: 1.串口调试 支持hex和ascii 码发送,接受. 支持自动添加回车换行. 支持定时发送,最短间隔100ms, ...

  7. 我编写的EEPROM 上位机软件

    进入模式: 上位机发送 消息 上位机EEPROM 按下进入模式 消息的ID号是:0x08111111 数据是: 00 01 ff 00 00 00 00 00 上位机显示 运行状态 :为进入模式 当我 ...

  8. C# 简易的串口监视上位机实现

    实现上位机和下位机之间的通信,通常使用的是串口通信,接下来实现一个通过上位机和串口调试助手来完成串口通信测试. 首先创建一个WInfrom窗体应用工程文件,创建过程可参考https://www.cnb ...

  9. 串口数据监视 Serial Port Monitor

    串口数据监视工具 Serial Port Monitor可以在其它应用读写串口时监视串口数据, 很好用,但只有15天试用期.

  10. ROS常用库(二) Serial库(单片机和上位机串口通讯)

    比如我们做了个单片机,在win里面用串口调试助手接收和下发数据,那么在ubuntu里用ros怎么实现?换个说法,怎么实现上位机和下位机的通讯? 首先,用python自带的库就可以实现这个功能. 安装p ...

随机推荐

  1. nnUNet 论文解析

    一些废话: 毕业论文用 nnUNet 及其自带的功能大概做了一个医学图像的分割模块.现将自己在学习过程中看过的相关论文及相关能找到的笔记记录整理在此.一些浅显的内容目的是在为自己做记录的同时,也希望能 ...

  2. mysql 连接失败:message from server: "Host '192.168.xx.xxx' is not allowed to connect to this MySQL server"

    前言 mysql 连接失败:message from server: "Host '192.168.xx.xxx' is not allowed to connect to this MyS ...

  3. [每日算法 - 华为机试] 剑指 Offer 57 - II. 和为s的连续正数序列 「滑动窗口」

    入口 力扣https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/ 题目描述 输入一个正整数 target ,输出所 ...

  4. [每日算法 - 华为机试] LeetCode 475. 供暖器

    入口 力扣https://leetcode.cn/problems/heaters/submissions/ 题目描述 冬季已经来临. 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖. 在加热 ...

  5. java学习-4-核心类:字符串

    实际上字符串String内部是通过一个char[]数组表示的.因此 String s = new String(new char[] {'h','e','l','l','o'}; 和 String s ...

  6. lua三色标记的读写屏障理解

    起因是已经被标记为黑色的对象无法进行再次遍历,然而黑色对象发生了引用变化:断开了引用或者引用了别的对象,会导致多标(不再被黑色对象引用的对象未能回收),漏标(黑色对象的新引用未能遍历标记)

  7. Electron 开发:获取当前客户端 IP

    Electron 开发:获取当前客户端 IP 一.背景与需求 1. 项目背景 客户端会自启动一个服务,Web/后端服务通过 IP + port 请求以操作客户端接口 2. 初始方案与问题 2.1. 初 ...

  8. Spring解决创建单例bean,而存在线程不安全问题,的解决方案

    一.线程安全问题都是由全局变量.静态变量和类的成员变量引起的.若每个线程中对全局变量.静态变量和类的成员变量只有读操作,而无写 操作,一般来说,这个全局变量是线程安全的,反之线程存在问题 二.因为Sp ...

  9. Solon AI MCP Server 入门:Helloworld (支持 java8 到 java24。国产解决方案)

    目前网上能看到的 MCP Server 基本上都是基于 Python 或者 nodejs ,虽然也有 Java 版本的 MCP SDK,但是鲜有基于 Java 开发的. 作为Java 开发中的国产顶级 ...

  10. 一条 SQL 语句在 MySQL 中的执行过程

    一条 SQL 语句在 MySQL 中的执行过程 当一条 SQL 语句被提交到 MySQL 时,它会经历多个步骤,包括解析.优化.执行等.以下以 SELECT 语句为例,详细描述整个执行流程. 1. 客 ...