KiCad 编译
KiCad 编译
因为最新项目需要,所以看了一下KiCad的编译,这里介绍的是64位电脑的编译,32位小伙伴请绕道官网看教程呦。
您可以在KiCad内查看基本的编译教程。
我这里也是参考的官网编译教程进行的编译,接下来让我们一起看看吧。
使用msys2编译KiCad
官网说在5.99和最终的6.0版本已经切换到msvc了,虽然还支持msys2但是可能支持不好。我再使用msys2编译最新的7.0的时候编译会报一个boost错误,我猜测应该是msys2下载的boost版本太低,而最新版本使用的一些函数已经找不到实现了,所以我下载了一个6.0版本的KiCad来使用msys2编译
首先需要下载一个msys2。 这里是MSYS2的官网
-
点击红框位置下载相关软件。
-
进入到安装包内使用msys2_shell.cmd运行(这里请跟步骤,一定要到安装包内点击cmd的运行文件运行)
-
在运行的程序中输入pacman -Syu,等执行完成后关闭界面。
-
打开mingw64.exe
-
执行如下代码:
# 首先需要安装对应的包,下面的代码需要一句一句执行
pacman -S base-devel
pacman -S git
pacman -S mingw-w64-x86_64-cmake
pacman -S mingw-w64-x86_64-doxygen
pacman -S mingw-w64-x86_64-gcc
pacman -S mingw-w64-x86_64-python2
pacman -S mingw-w64-x86_64-pkg-config
pacman -S mingw-w64-x86_64-swig
pacman -S mingw-w64-x86_64-boost
pacman -S mingw-w64-x86_64-cairo
pacman -S mingw-w64-x86_64-glew
pacman -S mingw-w64-x86_64-curl
pacman -S mingw-w64-x86_64-wxPython
pacman -S mingw-w64-x86_64-wxmsw3.1 # 该句如果执行不成功可以跳过该句的执行
pacman -S mingw-w64-x86_64-toolchain
pacman -S mingw-w64-x86_64-glm
pacman -S mingw-w64-x86_64-opencascade
pacman -S mingw-w64-x86_64-ngspice
pacman -S mingw-w64-x86_64-zlib
pacman -S mingw-w64-x86_64-openssl# 下面进入您拷贝的项目路径
cd kicad-source
mkdir -p build/release
mkdir build/debug # 该句是为了debug的版本保留的,如果您不需要可以不执行该句
cd build/release# 下面执行cmake构建项目
cmake -DCMAKE_BUILD_TYPE=Release \-G "MSYS Makefiles" \-DCMAKE_PREFIX_PATH=/mingw64 \-DCMAKE_INSTALL_PREFIX=/mingw64 \-DDEFAULT_INSTALL_PATH=/mingw64 \-DOCC_INCLUDE_DIR=/mingw64/include/opencascade \-DKICAD_SCRIPTING=OFF \-DKICAD_SPICE=OFF \../../
# cmake 完成之后make项目
make # 您也可以选择多线程make -j N
make install
- 在上面操作完成执行cmake的时候,可能会报一个错(Not Found wxWidgets 3.2.2.1)这个时候我们执行
pacman -R mingw-w64-x86_64-wxPython
pacman -R mingw-w64-x86_64-wxwidgets3.2-msw
pacman -S mingw-w64-x86_64-wxWidgets
pacman -S mingw-w64-x86_64-wxPython
pacman -S mingw-w64-x86_64-wxmsw3.2
这里就是卸载调冲突的包,重新安装对应的包,安装完成之后记得重启你的msys2控制台
- 之后您将进入较长时间的编译等待
搞了半天,编译出来的exe是不能运行的,我也不知道为什么,所以我尝试了使用vs去编译项目。
使用Visual Studio 编译KiCad
- 首先你需要下载如下软件:
VCPKG
vcpkg: 你可以点击该链接或者是使用如下代码获取对应的exe
// 获取vcpkg
git clone https://github.com/microsoft/vcpkg.git
// 执行该句获取vcpkg.exe
.\vcpkg\bootstrap-vcpkg.bat
SWIG
swig:你可以点击该链接下载swig,我下载的是swigwin-4.1.1
- 接下来你需要使用vcpkg安装以下依赖
./vcpkg.exe install glew glm boost wxwidgets curl cairo
- 然后你需要尝试将你的CMakeSetting.json修改为如下:
{// See https://go.microsoft.com//fwlink//?linkid=834763 for more information about this file."configurations": [{"name": "x86-Debug","generator": "Ninja","configurationType": "Debug","inheritEnvironments": [ "msvc_x86" ],"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}","installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}","cmakeCommandArgs": "","buildCommandArgs": "-v","ctestCommandArgs": "","variables": [{"name": "KICAD_SPICE","value": "OFF"},{"name": "KICAD_USE_OCE","value": "OFF"},{"name": "KICAD_SCRIPTING","value": "OFF"},{"name": "KICAD_SCRIPTING_WXPYTHON","value": "OFF"},{"name": "KICAD_SCRIPTING_MODULES","value": "OFF"}],"cmakeToolchain": "E:/vcpkg/scripts/buildsystems/vcpkg.cmake"},{"name": "x86-Release","generator": "Ninja","configurationType": "RelWithDebInfo","inheritEnvironments": [ "msvc_x86" ],"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}","installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}","cmakeCommandArgs": "","buildCommandArgs": "-v","ctestCommandArgs": "","variables": [{"name": "KICAD_SPICE","value": "OFF"},{"name": "KICAD_USE_OCE","value": "OFF"},{"name": "KICAD_SCRIPTING","value": "OFF"},{"name": "KICAD_SCRIPTING_WXPYTHON","value": "OFF"},{"name": "KICAD_SCRIPTING_MODULES","value": "OFF"}],"cmakeToolchain": "E:/vcpkg/scripts/buildsystems/vcpkg.cmake"},{"name": "x64-Debug","generator": "Ninja","configurationType": "Debug","inheritEnvironments": [ "msvc_x64_x64" ],"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}","installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}","cmakeCommandArgs": "","buildCommandArgs": "-v","ctestCommandArgs": "","variables": [{"name": "KICAD_SPICE","value": "OFF"},{"name": "KICAD_USE_OCE","value": "OFF"},{"name": "KICAD_SCRIPTING","value": "OFF"},{"name": "KICAD_SCRIPTING_WXPYTHON","value": "OFF"},{"name": "KICAD_SCRIPTING_MODULES","value": "OFF"}],"cmakeToolchain": "E:/vcpkg/scripts/buildsystems/vcpkg.cmake"},{"name": "x64-Release","generator": "Ninja","configurationType": "RelWithDebInfo","inheritEnvironments": [ "msvc_x64_x64" ],"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}","installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}","cmakeCommandArgs": "","buildCommandArgs": "-v","ctestCommandArgs": "","variables": [{"name": "KICAD_SPICE","value": "OFF"},{"name": "KICAD_USE_OCE","value": "OFF"},{"name": "KICAD_SCRIPTING","value": "OFF"},{"name": "KICAD_SCRIPTING_WXPYTHON","value": "OFF"},{"name": "KICAD_SCRIPTING_MODULES","value": "OFF"}],"cmakeToolchain": "E:/vcpkg/scripts/buildsystems/vcpkg.cmake"}]
}
或者你也可以按照教程上的一样修改.sample那个json。
修改自带的CMakeSetting.json.sample更简单,所以我决定修改CMakeSetting.json修改为.sample内的内筒
但是你要记得修改
{ "VcPkgDir": "D:/vcpkg/" }
这一条,修改为你的vcpkg所在的位置。
vcpkg将包安装完成之后打开kicad,我这里下载的时候kicad最新的是7.0版本,所以我下载的是7.0.0的kicad。
这样尝试了一下,不行,cmake报错,无法生成可编译的项目文件,但是别急,我又使用cmake可视化文件编译了一下。可能是我的vs自带的camke版本太低或者其他原因,总之我是不能编译的,你可以试一下你的,如果可以就不用看下面的教程了。
fuck,为什么我的不行啊,是不是哪里出问题了呀。换种思路:
使用cmake可视化工具+vs2019编译kicad
-
正常的选择kicad和编译文件夹之后点击configure,需要特殊选择的就是下图位置。
-
使用vcpkg做toolchain, 之后configure开始
- 正常的configure结束之后会报个错,我们需要将下载的swig给选中
他让选择的是下面的那个exe,选中exe之后会自动选中相对应的文件夹和版本号
- 接下来conifgure就不会报错啦,generate也不会报错
- 之后open project 打开文件就可以进行编译啦
- 等待编译完成。
相关文章:

KiCad 编译
KiCad 编译 因为最新项目需要,所以看了一下KiCad的编译,这里介绍的是64位电脑的编译,32位小伙伴请绕道官网看教程呦。 您可以在KiCad内查看基本的编译教程。 我这里也是参考的官网编译教程进行的编译,接下来让我们一起看看吧。…...

HTML 简介
文章目录HTML 简介实例解析什么是HTML?HTML 标签HTML 元素Web 浏览器HTML 网页结构HTML版本<!DOCTYPE> 声明通用声明HTML5HTML 4.01XHTML 1.0中文编码HTML 简介 HTML 实例 <!DOCTYPE html> <html><head><meta charset"utf-8"><ti…...
2023浙江省赛“信息安全管理与评估“--数字取证调查--网络数据包分析解析(高职组)
2022全国职业技能大赛“信息安全管理与评估”(高职组)任务书 2022全国职业技能大赛“信息安全管理与评估”任务书第一阶段竞赛项目试题第二阶段竞赛项目试题任务 2: 网络数据包分析第三阶段竞赛项目试题2022全国职业技能大赛“信息安全管理与评估”任务书 第一阶段竞赛项目…...

【Redis应用】查询缓存相关问题解决(二)
🚗Redis应用学习第二站~ 🚩起始站:【Redis应用】基于Redis实现共享session登录(一) 🚩本文已收录至专栏:Redis技术学习 👍希望您能有所收获,底部附有完整思维导图 一.概述 本篇我们会一起来学习…...

【SpringCloud】SpringCloud教程之Nacos实战(三集群配置)
目录前言一.Nacos集群逻辑图二.Nacos集群搭建1.搭建数据库,初始化数据库表结构2.下载Nacos3.配置Nacos3.启动Nacos4.配置启动nginx5.测试是否成功6.设置服务的nacos地址7.新增一个配置,查看数据看是否进行持久化了前言 在我前面两篇讲的都是单个nacos&a…...

什么是激励能力?HR人才测评
什么是激励能力?激励能力主要是针对管理型岗位而言的,尤其是团队型管理,既要督导团队成员,更需要掌握激励下属的方法和技巧。在HR人才测评系统中,对于管理型岗位的人才测评指标,通常也会包含激励能力&#…...

【刷题笔记】之滑动窗口(长度最小的子数组、水果成篮、最小的覆盖子串)
滑动窗口模板//滑动窗口模板:注意使用滑动窗口方法,使用一个 for(while) 循环中的变量是用来控制终止位置的//最小滑窗:给定数组 nums,定义滑动窗口的左右边界 i、j,求满足某个条件的滑窗的最小长度 for(j 0; j < …...

【JavaScript速成之路】JavaScript函数
📃个人主页:「小杨」的csdn博客 🔥系列专栏:【JavaScript速成之路】 🐳希望大家多多支持🥰一起进步呀! 文章目录前言1,函数基础1.1,函数概念1.2,函数使用1.3&…...

萤火虫算法优化SVM变压器故障分类预测,fa-svm分类预测,libsvm参数优化
目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 SVM应用实例,基于fa-svm分类预测 代码 结果分析 展望 支持向量机SVM的详细原理 SVM的定义 支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是…...

JavaScript DOM API的使用
文章目录一. 什么是DOM二. 最常用的DOM API1. 选中页面元素2. 操作元素的属性2.1 事件概念2.2 获取/修改元素内容计数器2.4 获取/修改元素属性点击图片切换2.5 获取/修改表单元素属性表单计数器全选/取消全选按钮2.6 获取修改样式属性点击文字放大实现夜间/日间模式的切换3. 操…...

Vue组件库出现$listeners is readonly等错误的原因及预防方法
本文主要是面向写组件库的人士,而不是组件库的使用人士。 出现原因 根本原因是因为组件库的package.json中 dependencies包含了vue包,然后导致最后打包出来的组件库也包含vue包 然后和引用这个组件库的项目中的vue发生冲突。 举个例子,pro…...
lsusb
用法: lsusb -hUsage: lsusb [options]... List USB devices -v, --verbose Increase verbosity (show descriptors) -s [[bus]:][devnum] Show only devices with specified device and/or bus numbers (in decimal) -d vendor:[product] …...

Allegro如何在PCB中添加层面操作指导
Allegro如何在PCB中添加层面操作指导 在用Allegro做PCB设计的时候,根据需要,会在PCB中额外添加一些额外的层面,如下图 如何添加,具体操作如下 点击Setup点击Subclasses...

淘宝widget链路方案总结
目前widget生态已经做了大量的基建工作,同时在widget生态的演进过程中我们发现如何匹配用户的偏好一直以来是一个挑战工作,本文介绍了widget的整体链路。业务背景▐ widget介绍2020年底iOS推出了新版widget之后引起了一些声浪,但仍然很多苹果用户并不了…...

c++指针
内存地址 将内存抽象成一个很大的一维字符数组,编码就是对内存的每一个字节分配一个32位或64位的二进制编号。这个内存编号称之为内存地址(唯一),内存中的每一个数据都会分配相应的地址。 #include<iostream> using namesp…...

Qt 贴图实现方向控制盘
一、效果走一波 二、使用贴图进行不规则按钮的设计与开发 开发环境描述:QtCreator Qt Desinger (1)首先准备待贴的图片 图片的切片大小必须一样,背景为透明的;将待贴的所有图片都切下来,文件标明名称…...

建模杂谈系列211 ADBS的取数模式以及衔接
说明 这应该是进一步的完善ADBS的工作模式。 之所以做A系列的架构工具,就是为了可以实现大型的数据处理、存储。从应用上说,是为了提高效率,并达到超高的效果。 为了达到这个目的,就必须从数据架构上、任务调度上、逻辑架构上作…...

易基因:RRBS揭示晚年锻炼可以减缓骨骼肌表观遗传衰老(甲基化年龄)|新研究
大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。2021年12月21日,美国阿肯色大学、德克萨斯大学和肯塔基大学的研究人员合作在《Aging Cell》杂志发表了题为“Late-life exercise mitigates skeletal muscle epigenetic aging”…...

JVM的基本知识
JVM JVM是java的虚拟机,是一个十分复杂的东西,所以掌握的要求比较高.本文主要是研究JVM的三大话题 JVM内存划分JVM类加载JVM的垃圾回收 JVM内存划分 java程序要执行的时候,JVM会先申请一块空间,这里就涉及到JVM的内存划分 堆 : 放的是new 出来的对象栈: 放的是方法之间的调…...

STM32移植FreeRTOS操作系统
一、FreeRTOS源码下载(1)移植钱得准备前菜对吧,我们先来去官网瞄一瞄网址:https://freertos.org/zh-cn-cmn-s/ 第一步:点击下载FreeRTOS第二步:选择版本下载(我选择稳定版本)注&…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...