开源电路仿真软件Qucs-S代码解读(一):使用MSYS2编译构建CPP项目(原创)

笔者原本是学Java,Python和STM32的,但因横向项目需要,计划开发一款针对大型风电电力系统的电路仿真软件。经过Github上的查找,发现存在开源电路仿真软件Qucs-S,代码清晰,文档齐全,因此决定在其基础上做开发改进。

本文以开源电路仿真软件qucs-s为例,介绍了如何在windows的msys2下构建cpp项目,与linux有什么区别,并用vscode搭建了msys2开发环境。

1. Qucs-S介绍

Qucs-S (Quite universal circuit simulator with spice) 是原电路仿真软件Qucs的一个分支,地址链接如下:

qucs-s主页         qucs-s代码         windows qucs-s安装包         原qucs主页

Qucs-S基于QT5构建,数值运算库用的是GNU Scientific Library(GSL),底层仿真可选择Ngspice, Xyce, SpiceOpus, Qucsator (non-spice)等多个内核。

以下是软件截图:

2. 在Linux平台下编译构建项目

笔者使用的是VMware下的Ubuntu22.04虚拟机,在linux下下载依赖以及编译代码相比windows要容易得多。

首先使用apt下载依赖项:

sudo apt-get install ngspice build-essential git cmake qtbase5-dev qttools5-dev libqt5svg5-dev flex bison

其中,ngspice是默认的仿真内核,flex和bison是GNU下的词法分析器和语法分析器。

按照CMake项目编译的基本步骤:1 下载代码,2 创建build目录,3 cmake,4 make。linux自带的gcc编译器就能够顺利的完成项目的编译。

git clone https://github.com/ra3xdh/qucs_s.git
cd qucs_s
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=./build
make .
./qucs  # 开始运行

如果不指定CMAKE_INSTALL_PREFIX选项,则默认安装在/usr/local下,很方便,不需要配置环境变量,就是不容易卸载。

另外还可以使用vscode开发该项目。vscode要安装cmake和cpp开发插件。插件安装后,侧栏中configure就对应于之前提到的cmake ..指令,build就对应于make指令。点击debug就可以开启程序的调试了,此时软件安装在./build目录下。

3. 在Windows平台下编译构建项目

在Windows平台下用cmake编译开源cpp项目一直都是个比较困难的课题,qucs-s也不例外。因为cmake不像maven和pip那样能自动安装依赖,经常手动安装了也依然找不到包。笔者耗费多日,尝试了多款编译器,最终请教了Qucs-S的原作者才解决问题。

Qucs-S项目原作者说,在Windows平台下推荐使用MSYS2编译器。这是一个类似Cygwin或者WSL的arch linux环境,其中可以包含Mingw。

MSYS2的安装包地址

下载安装MSYS2之后,要在MSYS2中安装依赖项,就像上节在ubuntu里那样。

首先安装Mingw编译器,以及其他依赖项,点击

 执行以下命令,用pacman安装Mingw编译器:

pacman -Syu  # 更新软件源
pacman -S mingw-w64-x86_64-gcc
pacman -S mingw-w64-x86_64-make
pacman -S mingw-w64-x86_64-cmake
pacman -S mingw-w64-x86_64-gdb

 然后安装其他软件依赖,点击

pacman -S mingw-w64-x86_64-qt5 mingw-w64-x86_64-qt-creator
pacman -S cmake git
pacman -S flex bison
pacman -Sy base-devel  # 相当于ubuntu下的build-essential
pacman -S mingw-w64-x86_64-armadillo  # 后续数学运算会用到的库

接着就可以开始编译了

git clone https://github.com/ra3xdh/qucs_s.git
cd qucs_s
mkdir build
cd build
cmake .. -G "MinGW Makefiles"
cmake --build .
./qucs # 开始运行

注意此处cmake 要选择Generator 为 "MinGW Makefiles",也就是针对MinGW编译器生成makefile,这样才能使用MinGW编译。此处也不能直接使用make开始编译,要用cmake --build命令。

 之后就可以运行程序了。

4. 在VSCode下搭建MSYS2开发环境

一些参考文献:

makefile - MinGW C compiler "not able to compile a simple test program" - Stack Overflow

https://github.com/microsoft/vscode-cmake-tools/issues/2506

vscode下使用cmake和在命令行里使用cmake原理虽然一样,但是配置文件很不好整,需要完全理解才行。在此处我们需要配置用户设置文件以达到与命令行里相同的效果。假设你的msys装在C:\msys64下,打开vscode的settings.json(上方搜索框输入>settings.json),加入以下设置:

    "cmake.configureSettings": {
        "CMAKE_AR": "C:/msys64/mingw64/bin/ar.exe",
        "CMAKE_MAKE_PROGRAM": "C:/msys64/usr/bin/make.exe",
        "CMAKE_PREFIX_PATH": "C:/msys64/mingw64"
    },
    "cmake.environment": {
        "PATH": "C:\\msys64\\mingw64\\bin;C:\\msys64\\usr\\bin;C:\\msys64\\usr\\local\\bin;C:\\msys64\\bin;${env:PATH}"
    },
    "cmake.generator": "MinGW Makefiles",
    "cmake.additionalCompilerSearchDirs": [
        "C:/msys64/mingw32/bin",
        "C:/msys64/mingw64/bin",
        "C:/msys64/clang32/bin",
        "C:/msys64/clang64/bin",
        "C:/msys64/clangarm64/bin",
        "C:/msys64/ucrt64/bin"
    ],
    "cmake.cmakePath": "C:\\msys64\\mingw64\\bin\\cmake.exe",

这个设置非常关键,笔者调了很久。有了这个设置,VS Code下的cmake插件就会在和msys2的命令行中一样运行。首先要注意,cmakePath用的是mingw64目录下的,而不是usr目录下的,更不是windows自带的。其次注意cmake.environment要和msys2命令行下的path一模一样。

左侧cmake栏里的configure里面要选择msys下的mingw64 gcc。然后点击configure,运气好就会成功。如果cmake报一些乱码错误,可以重新下载源码或重装cmake和mingw,如果提示找不到依赖,检查cmake的路径以及环境变量设置。

接下来点击左侧cmake栏里的Debug,选择qucs-s,程序成功开始调试!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值