Kicad编译

Windows

1.安装visual studio Pro 2019 以上版本,建议2022,自行破解,安装时一定要勾选上cmake工具;安装Git bash

2.去Gitlab上fork kicad的master分支到自己的gitlab仓库上,在本地创建kicad-source路径,初始化本地仓库, clone自己Gitlab仓库的kicad源码

3.在自定义路径下安装vcpkg(vs的环境配置工具),不要放在kicad-source路径下即可。执行

git clone https://github.com/microsoft/vcpkg.git
.\vcpkg\bootstrap-vcpkg.bat

4.到kicad-source下找到CMakeSettings.json.sample,在此路径下复制并粘贴,改名字为CMakeSettings.json,打开json文件修改"VcPkgDir"的键值对,改为本地的vcpkg安装文件,example

{ "VcPkgDir": "D:/vcpkg/" },

5.打开vs2022,选择打开文件夹,选择kicad-source文件夹,vs集成的cmake工具会自动执行,等待vcpkg安装好依赖,直到cmake报错swig缺失再继续第六步

6.自行安装swig,路径不要放在kicad-source下,SWIG - Browse /swigwin at SourceForge.net ,解压压缩包,然后找到swig.exe,将路径替换到下面的your_swig_path,替换后复制到CMakeSettings.json"name": "x64-Debug"下的"cmakeCommandArgs"的键值对,注意每一个反斜杠用两个反斜杠替换

{"environments": [{"BuildDir": "${workspaceRoot}\\build","InstallDir": "${workspaceRoot}\\build\\install"},{"environment": "vcpkg","VcPkgDir": "D:/ExtendLib/vcpkg/vcpkg/"},{"environment": "mingw_64","MINGW64_ROOT": "D:/msys64/mingw64","BIN_ROOT": "${env.MINGW64_ROOT}/bin","FLAVOR": "x86_64-w64-mingw32","TOOLSET_VERSION": "10.2.0","PATH": "${env.MINGW64_ROOT}/bin;${env.MINGW64_ROOT}/../usr/local/bin;${env.MINGW64_ROOT}/../usr/bin;${env.MINGW64_ROOT}/../bin;${env.PATH}","INCLUDE": "${env.INCLUDE};${env.MINGW64_ROOT}/include/c++/${env.TOOLSET_VERSION};${env.MINGW64_ROOT}/include/c++/${env.TOOLSET_VERSION}/tr1;${env.MINGW64_ROOT}/include/c++/${env.TOOLSET_VERSION}/${env.FLAVOR}"}],"configurations": [{"name": "x86-Debug","generator": "Ninja","configurationType": "Debug","inheritEnvironments": [ "msvc_x86", "vcpkg" ],"buildRoot": "${env.BuildDir}\\${name}","installRoot": "${env.InstallDir}\\${name}","addressSanitizerEnabled": false,"cmakeCommandArgs": "","buildCommandArgs": "-v","ctestCommandArgs": "","variables": [{"name": "KICAD_BUILD_QA_TESTS","value": "False","type": "BOOL"},{"name": "KICAD_WIN32_DPI_AWARE","value": "ON","type": "BOOL"}],"cmakeToolchain": "${env.VcPkgDir}/scripts/buildsystems/vcpkg.cmake"},{"name": "x86-Release","generator": "Ninja","configurationType": "RelWithDebInfo","inheritEnvironments": [ "msvc_x86", "vcpkg" ],"buildRoot": "${env.BuildDir}\\${name}","installRoot": "${env.InstallDir}\\${name}","cmakeCommandArgs": "","buildCommandArgs": "-v","ctestCommandArgs": "","variables": [{"name": "KICAD_BUILD_QA_TESTS","value": "False","type": "BOOL"},{"name": "KICAD_WIN32_DPI_AWARE","value": "ON","type": "BOOL"}],"cmakeToolchain": "${env.VcPkgDir}/scripts/buildsystems/vcpkg.cmake"},{"name": "x64-Debug","generator": "Visual Studio 17 2022","configurationType": "Debug","inheritEnvironments": [ "msvc_x64_x64", "vcpkg" ],"buildRoot": "${env.BuildDir}\\${name}","installRoot": "${env.InstallDir}\\${name}","cmakeCommandArgs": "-DSWIG_EXECUTABLE=D:/ExtendLib/vcpkg/swigwin-4.1.1/swig.exe","buildCommandArgs": "-v","ctestCommandArgs": "","variables": [{"name": "KICAD_BUILD_QA_TESTS","value": "False","type": "BOOL"},{"name": "KICAD_WIN32_DPI_AWARE","value": "ON","type": "BOOL"}],"cmakeToolchain": "${env.VcPkgDir}/scripts/buildsystems/vcpkg.cmake"},{"name": "x64-Release","generator": "Visual Studio 17 2022","configurationType": "RelWithDebInfo","inheritEnvironments": [ "msvc_x64_x64", "vcpkg" ],"buildRoot": "${env.BuildDir}\\${name}","installRoot": "${env.InstallDir}\\${name}","cmakeCommandArgs": "-DSWIG_EXECUTABLE=D:/ExtendLib/vcpkg/swigwin-4.1.1/swig.exe","buildCommandArgs": "-v","ctestCommandArgs": "","variables": [{"name": "KICAD_BUILD_QA_TESTS","value": "False","type": "BOOL"},{"name": "KICAD_WIN32_DPI_AWARE","value": "ON","type": "BOOL"}],"cmakeToolchain": "${env.VcPkgDir}/scripts/buildsystems/vcpkg.cmake"},{"name": "MSYS2-x64-Debug","generator": "Ninja","configurationType": "Debug","inheritEnvironments": [ "mingw_64" ],"buildRoot": "${env.BuildDir}\\${name}","installRoot": "${env.InstallDir}\\${name}","cmakeCommandArgs": "","buildCommandArgs": "-v","ctestCommandArgs": "","intelliSenseMode": "linux-gcc-x64","cmakeToolchain": "","variables": [{"name": "CMAKE_C_COMPILER","value": "${env.BIN_ROOT}/gcc.exe"},{"name": "CMAKE_CXX_COMPILER","value": "${env.BIN_ROOT}/g++.exe"},{"name": "KICAD_BUILD_QA_TESTS","value": "False","type": "BOOL"},{"name": "KICAD_WIN32_DPI_AWARE","value": "ON","type": "BOOL"}]}]
}

7.第6步后vs会自动进行cmake直到显示"CMake generation finished",此时就说明生成makefile成功了,之后可以进行全量编译。注意此时CMakeSettings.json里的"x64-Debug"的生成器是"generator": "Ninja",它不是MSBuild,所以不会生成VS的工程文件,构建的方式也是按照"Ninja"的构建方式去构建的,如果只追求快速编译生成可以使用它,如果要调试debug,可以选择使用MSBuild生成VS的工程文件*.sln,再打开VS的*.sln来进行开发和调试。具体做法就是把"x64-Debug"的生成器替换成"generator": "Visual Studio 17 2022 Win64",具体可以直接改CMakeSettings.json,也可以在vs界面里选择。修改后会重新进行cmake

注意:vs里面的cmake可以自行设置,一般默认的是CMakeSettings.json只要被修改,VS的cmake会自动开始运行,读取CMakeSettings.json执行修改

8.如果是要在debug模式下进行调试,还需要进行launch.vs.json的修改替换,把下面的json代码直接替换即可,都是相对路径,不需要修改。具体打开launch.vs.json的方式是VS Menu->Debug->Debug and Launch Settings。注意这里改的是整个kicad项的launch.vs.json,如果是要独立生成调试pcbnew 或 eeschema,需要单独配置这些项的launch.vs.json,配置参数参考下面的对应部分。

注意:这里第8步,是kicad官方的操作方式,这种配置修改launch.vs.json的调试启动方式是有前提条件的,1.在vscode里面,vs2017以及以后版本的VS;2.基于目录的项目的代码,而没有创建解决方案或者项目文件的项目(详细介绍参考微软官方简介:Launch.vs.json 架构参考 (C++) | Microsoft Learn),所以说对于使用VS进行常规调试的程序者来说,这是不舒服的,我就想按照常规的方式使用VS直接单步调试代码,能行么?可以的,搞一个批处理脚本设置对应的启动属性就可以,批处理脚本如下(前提是已经使用MSVC构建好vs解决方案):

set "KICAD_RUN_FROM_BUILD_DIR=1"
set "KICAD_USE_EXTERNAL_PYTHONHOME=1"
set "PYTHONHOME=D:/ExtendLib/kicad-source-mirror-master/build/x64-Debug/vcpkg_installed/x64-windows/tools/python3"
set "PYTHONPATH=D:/ExtendLib/kicad-source-mirror-master/build/x64-Debug/pcbnew;D:/ExtendLib/kicad-source-mirror-master/pcbnew/python"
set "path=D:/ExtendLib/kicad-source-mirror-master/build/x64-Debug/vcpkg_installed/x64-windows/debug/bin"
%~dp0kicad.sln
pause

使用很简单,把该批处理文件放在如下目录

 如果不想使用该脚本,也可以在自身电脑里面添加对应的环境变量,也是可以滴

9.通过kicad调试所有模块(pcbnew等)

通过上述方式启动vs解决方案,编译代码,通过vs调试程序,进入kicad主界面

 点击任意子模块,此处以PCB Editor为例,

 提示加载E:\vs2022\projects\kicad-master\build\x64-Debug\kicad\pcbnew\_pcbnew.dll 失败找不到指定模块,so,我找到_pcbnew.dll文件放在对应目录下,继续调试,还是不行,还是提示同样的错误,这不合理,看一下代码:

输入的路径是对的,返回是false,失败,经过一番折腾,发现_pcbnew.dll是要把其它依赖文件放在一起的,如下:

 加了其它依赖库,再调试,OK,可以了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/2351.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

B站 Java相关学习资源汇总

一、计算机网络 计算机网络微课堂 https://www.bilibili.com/video/BV1c4411d7jb?p1 讲师:湖科大教书匠 评价:通俗易懂,重点知识十分细致,配合实验,而且有考研408 的难题的讲解,也是非常适合考研党&#…

【线程池】ScheduledExecutorService接口和ScheduledThreadPoolExecutor定时任务线程池使用详解

目录 〇、简介 0.1 ScheduledExecutorService 和 Timer 的区别 一、什么是ScheduledExecutorService? 二、ScheduledThreadPoolExecutor中的方法 2.1 构造方法 2.2 schedule方法 2.3 scheduleAtFixedRate方法 2.4 scheduleWithFixedDelay方法 2.5 setConti…

【Java】直接return 会触发try-catch 里面的finally的方法么

🐱‍🚀/背景 try-catch 主要的作用是捕获异常,那么程序没有异常,finally里面代码能否执行? 特别是如果我们前面进行了加锁等操作,没有释放锁,那不是会造成业务逻辑问题, 先说结论:…

oracle只读打开数据库

客户经常有这样的需求,数据库已迁移,但还是希望原库可以打开,就只能只读模式打开了 方法一 SYSorcl> STARTUP OPEN READ ONLY; ORACLE instance started. Total System Global Area 4.0086E10 bytes Fixed Size 22549…

大体积mbtiles影像地图文件用什么软件浏览?

mbtiles格式简称mbt,是一种影像地图文件。PC端和手机端都有软件可以加载留着mbt格式的影像地图。 电脑桌面端 电脑端上的软件可以使用“图新地球”,直接把mbt文件拖到地图上即可,非常简便。 手机端 可以从华为应用商店下载“外业精灵”app…

【Linux】 -- TCP协议 (一)

TCP协议 Tcp协议可靠性冯诺依曼体系结构 TCP的协议格式序号与确认序号窗口大小六个标志位 确认应答机制 (ACK)超时重传机制连接管理机制 Tcp协议 TCP全称为 “传输控制协议”(Transmission Control Protocol) TCP协议被广泛应用…

基于深度学习的高精度动物园动物检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度动物园动物(水牛、斑马、大象、水豚、海龟、猫、奶牛、鹿、狗、火烈鸟、长颈鹿、捷豹、袋鼠、狮子、鹦鹉、企鹅、犀牛、羊、老虎)检测识别系统可用于日常生活中或野外来检测与定位动物园动物,利用深度学…

【需求实现】Tensorflow2的曲线拟合(三):Embedding层

文章目录 导读Embedding的维度问题Embedding的输入输出比较容易踩的坑input_shape与input_length的对应关系built属性 导读 这是填曲线拟合第一篇的坑,有关Embedding层的问题。 Embedding的维度问题 首先是上次我们提到的Embedding层,他确实能够做到将…

6.4.2 文件隐藏属性

chattr指令只能在Ext2/Ext3/Ext4的 Linux 传统文件系统上面完整生效, 其他的文件系统可能就无法完整的支持这个指令了,例如 xfs 仅支持部份参数而已。 chattr (设置文件隐藏属性) 这个指令很重要,在系统的数据安全上面…

uniapp小程序订单页面UI

前言 之前用模板写了订单页面,由于需求改了导致这个页面做更新麻烦,弄了一下午,索性全部删除了自己写了,上面的tabs用的是b-ui框架写的,其他的都是原生写法。 🙏如果这篇文章对你有帮助还请收藏点赞关注&…

第一个python程序

一、pycharm快捷键 二、第一个python程序 """ """ 需求:输入圆的半径,计算圆的周长和面积,结果保留两位小数,对圆的半径和输入进行有效性校验 """ """ 写代码的规…

线性代数基础--矩阵

矩阵 矩阵是由排列在矩形阵列中的数字或其他数学对象组成的表格结构。它由行和列组成,并且在数学和应用领域中广泛使用。 基本概念 元素:矩阵中的每个数字称为元素。元素可以是实数、复数或其他数学对象。 维度:矩阵的维度表示矩阵的行数和…