Serial-Studio 上位机编译全过程深度讲解,解决串口数据可视化工具

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

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

    PowerShell

    bash 复制代码
    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

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

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

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

  1. 使用 Chocolatey 安装 Git

    bash 复制代码
    choco install git -y
    • 命令含义

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

1.3 下载项目源代码

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

  1. 切换驱动器:

    Bash

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

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

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

    bash 复制代码
    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 官方下载地址:

      web-idl 复制代码
      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

    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 配置:

    bash 复制代码
    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).
bash 复制代码
   cd F:\Qt16.8.3\mingw_64\bin
   windeployqt.exe F:\project\serial-studio\build\appiserial-studio.exe

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