浅析KiCad 7.99在Debian 12上的编译/构建流程

描述

一般用户可以通过下载 nightly 来使用 7.99 版本。不过由于时差,有时候我晚上提交的 issue,过几个小时开发者就能提交修复,这时候我就可以通过更新代码并重新编译代码来运行最新的版本,不需要等待和下载 nightly build。另外有一些小的 bug 我也可以自己想办法修改并提交 M(erge) R(equest)。

编译器

这里提供一些补充的信息。

安装依赖

Debian 12 的官方 apt 源提供了所有编译 Kicad 7.0会用到的库,也是 KiCad 开发者提供支持的编译环境。之前使用 Debian 11 编译 KiCad 7 遇到很多问题 ,需要自己编译更新一些依赖,折腾了很久,作为经验 后面有一个部分会简要提及。

 

sudo apt install git gcc binutils gdb cmake ninja-build libopengl-dev libglx-dev  libgl-dev libglew-dev libglm-dev zlib1g-dev curl libcurl4-gnutls-dev libcairo2-dev libgit2-dev libboost1.74-all-dev libharfbuzz-dev ngspice-dev libngspice0-dev libocct-*-dev swig4.0 wxpython-wxgtk4.0 libwxgtk3.2-dev unixodbc-dev libgtk-3-dev libsecret-1-dev

 

ninja 和下面说的 mold 是推荐的可以提高编译和链接速度的选项。

Mold的自行编译

 

git clone https://github.com/rui314/mold.git
cd mold 
git v2.4.0 -b 2.4.0
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=c++ ..
cmake --build . -j `nproc`
sudo cmake --install .

 

mold 被默认安装到 /usr/local/bin/mold, 为了使用 mold ,需要确定这 /usr/local/bin    被加入到环境变量的 PATH 中。

准备 KiCad 源代码

 

mkdir -p ~/Developer/Engineering/KiCad
cd ~/Developer/Engineering/KiCad
git clone https://gitlab.com/kicad/code/kicad.git kicad-master


# 这些库特别是3D模型库比较大,并且不影响源代码编译,可以新开一个终端进行这些库的下载,
git clone https://gitlab.com/kicad/libraries/kicad-packages3D.git
git clone https://gitlab.com/kicad/libraries/kicad-symbols.git
git clone https://gitlab.com/kicad/libraries/kicad-footprints.git


cd kicad-master

 

编译

 

# 在 kicad-master/build/rel 目录下
cmake -G Ninja -DKICAD_VERSION_EXTRA=qdiotpi -DCMAKE_INSTALL_PREFIX=$(dirname $PWD)/release_install -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_FLAGS=-fuse-ld=mold ../..

 

也可以使用下面的标志位可以指定特定的 mold 执行文件

 

-DCMAKE_CXX_FLAGS=-B/usr/local/bin/mold

 

对于使用 wayland 的环境,可以增加下面的标志

 

 -DKICAD_USE_EGL=ON

 

可以在标准的版本号上附加一个版本标识,以区别官方编译的版本

 

-DKICAD_VERSION_EXTRA=qdiotpi

 

如果不准备将编译结果安装到某个目录,可以不添加下面的参数

 

-DCMAKE_INSTALL_PREFIX=$(dirname $PWD)/release_install

 

运行

常用的方式是直接在编译目录运行,而不需要执行 install 命令:

 

# 依然在 kicad-master/build/rel
KICAD_RUN_FROM_BUILD_DIR=1 ./kicad/kicad
# 或者
KICAD_RUN_FROM_BUILD_DIR=1 ./eeschema/eeschema
# 或者
KICAD_RUN_FROM_BUILD_DIR=1 ./pcbnew/pcbnew

 

由于我还没有调研的某个原因,不能在 KiCad 界面调用计算器等工具,这时候也需要命令行进行调用

 

# 依然在 kicad-master/build/rel
KICAD_RUN_FROM_BUILD_DIR=1 ./pcb_calculator/pcb_calculator

 

由于有时候新版的 KiCad 的崩溃情况会比较多,所以我会使用 gdb 启动 KiCad,这样崩溃的时候可以在 gdb 中查看崩溃的 back trace。

 

# 依然在 kicad-master/build/rel
KICAD_RUN_FROM_BUILD_DIR=1 gdb ./kicad/kicad
# 进入 gdb 后,要使用 run 命令执行 kicad
# 如果要设定断点,需要等 kicad 进程启动完成,再在 gdb 中(使用 ctrl-c 中断之后) 设置断点

 

Debug 编译

之前构建的版本是 RelWithDebInfo,如果你是因为要开发 KiCad 的功能,最好还是使用 Debug 目标,这样会取消掉编译器优化,方便源代码级调试:

 

-DCMAKE_BUILD_TYPE=Debug

 

调试信息输出 ( 只有在 Debug 模式下运行才有此 log 输出 )

如果在代码里看到 wxLogTrace,如下图

编译器

可以在运行的时候开启这个部分 (PNS) 的 trace log 输出

 

KICAD_RUN_FROM_BUILD_DIR=1  WXTRACE=PNS ./pcbnew/pcbnew

 

KiCad 运行配置

自己编译的版本并未带有基础的符号、封装及其他设计库,需要自己设定

编译器

在这里将基础的库路径一一设置到前面下载的库路径

编译器

启动原理图或者符号编辑器,会提示复制全局的符号库

编译器

编译器

启动PCB或者封装编辑器,会提示复制全局的封装库

编译器

使用非系统 wxPython 库的编译

由于 Debian 11 官方的 apt 源的库(主要是 wxPython )版本太低,不支持直接编译 KiCad 7.0。在未升级到 Debian 12 前,找到了一个方案来使用新版本 wxPython。不过这个方案应该也可以在其他某些情况下不使用系统库版本的时候使用。因为现在手头没有 Debian 11 的环境了,所以这里只记录一下概念和过程,有这种需要的朋友还要自己尝试。因为可以指定特定版本的 wxPython,所以对于一些特殊需要,比如使用特定版本的 wx之类的需求有借鉴意义。

wxPython 要求它调用的 wx 库必须是编译 wxPython 一致的库版本才可以。我使用了 https://docs.codelite.org/wxWidgets/repo320/ 来安装 KiCad 7.0 支持的 wx 运行时版本

然后下载了 wxPython 的源代码包。

我新建了一个 python venv ,激活启用这个 venv,并将 wxPython 编译安装进这个 venv。

 

python build.py  --use_syswx build_py
python build.py  --use_syswx install_py

 

编译 KiCad

 

cmake -G Ninja -DKICAD_VERSION_EXTRA=qdiotpi -DCMAKE_INSTALL_PREFIX=$(dirname $PWD)/debug_install -DPYTHON_SITE_PACKAGE_PATH=$(PATH_TO_VENV)/lib/python3/site-packages -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS=-B/usr/local/libexec/mold ../../

 

最重要的是设置如下的标志位到你自己的 venv 路径

 

-DPYTHON_SITE_PACKAGE_PATH=$(PATH_TO_VENV)/lib/python3/site-packages

 






审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分