Kicad编译

news2024/11/18 2:46:44

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.coloradmin.cn/o/700186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【debug】:安装mmcv-full==1.2.4包过程报错

【debug】:安装mmcv-full1.2.4包过程报错This error originates from a subprocess, and is likely not a problem with pip WARNING: Ignoring invalid distribution -illow (d:\anaconda3\envs\pytorch\lib\site-packages) 这是由于安装包过程中曾经出现问题,会影…

生成特定相关系数的变量

本文转载自根据相关性生成变量 已知一组变量a,想要生成另一组变量b,要求a与b之间相关性为c。 实现思路如下: 设固定变量为x1,随机变量x2,相关系数为rho。x1与x2之间的相关性可以转化为向量之间的夹角问题,…

Linux与Windows:操作系统之争及个人体验比较

在当今数码化的世界中,操作系统扮演着关键的角色。Linux和Windows作为最受欢迎和广泛使用的操作系统之一,具有不同的特点和优势。作为一个AI模型,我虽然没有真正的使用经验,但我可以就这两个操作系统进行比较,并提供一…

pointclouds 点云 demo 中的资源文件如pcd找不到的问题

一、问题描述 点云官网提供了许多学习点云类库的例子和demo ,但是在github中找到tutorials后执行 mkdir build cd build cmake .. make 之后却发现没有 资源文件,怎么办 如:pcl-pcl-1.7.2\doc\tutorials\content\sources\normal_estimation…

QVHZO-A-06-3/U0/WG直动式比例流量阀控制器

QVHZO-A-06-3/U0/WG、QVHZO-A-06-12/I/PE、QVHZO-A-06-18/I、QVHZO-A-06-36/U0、QVHZO-A-06-45/I、QVKZOR-A-10-65/I/PE、QVKZOR-A-10-90/I直动式比例流量阀特点: 具有恒压差流量补偿功能 通过比例线圈起动 用于底板安装: 油口安装面符合ISO4401(规格尺寸6和10)…

基于单片机智能温室大棚控制系统

功能介绍 以51单片机作为主控系统; DS18B20温度采集模块检测温度; 光敏电阻和ADC0832组成的光照检测模块; 土壤湿度检测模块检测土壤湿度; CO2检测模块检测CO2浓度; LCD1602显示模块显示测量值、 若温度小于温度最…

Middleware ❀ Zookeeper功能与使用详解

文章目录 1、功能简述1.1 服务目标1.2 文件系统 - 树状结构1.3 数据节点Znode类型1.4 变更通知 - Watcher1.4.1 工作机制1.4.1.1 Client注册1.4.1.2 Server处理1.4.1.3 Client回调 1.4.2 监听特性 1.5 权限控制 - ACL1.5.1 模式 - scheme1.5.2 权限 - Permission 1.6 选举机制1…

Springboot如何手动连接库并获取指定表结构

一、前言🔥 通过,在使用springboot框架之后,就很少涉及到手动连接数据库的方式了,但bug菌有遇到这么一个需求场景,给到你的是无上限的数据库连接信息,要求你能按连接信息指定获取表数据,突然我就…

玩机搞机---另类操作 修改原生卡刷包转换为线刷包方式刷机

偶然给安卓机型刷写原生安卓的系统。可能其第三方twrp原因或者底包原因导致卡刷一直报错。虽然最终写入开机,但浪费时间,究其原因还在于分区切换和挂载分区导致的。写这篇博文的意义不是在于让玩家按步骤转换线刷,只是明白其分区写入的原理 索…

【JavaEE初阶】TCP/IP协议(二)

文章目录 网络层重点协议IP协议地址管理路由选择 数据链路层重点协议以太网协议MTU 应用层重要协议DNS(域名解析系统) 网络层重点协议 IP协议 协议头格式如下: 4位版本号(version):指定IP协议的版本&am…

2023-6-28-第十一式代理模式

🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 💥💥💥欢迎来到🤞汤姆🤞的csdn博文💥💥💥 💟💟喜欢的朋友可以关注一下&#xf…

解读 RocketMQ 5.0 全新的高可用设计

作者:斜阳 高可用架构演进背景 在分布式系统中不可避免的会遇到网络故障,机器宕机,磁盘损坏等问题,为了向用户不中断且正确的提供服务,要求系统有一定的冗余与容错能力。RocketMQ 在日志,统计分析&#x…

Selenium系列(二) - 详细解读针对浏览器的操作

控制浏览器有哪些操作? 最大化、最小化浏览器控制、获取浏览器大小获取当前标签页title、url前进、后退、刷新执行js语句打开、关闭新标签页滚动页面 点击右边目录即可跳转哦! -------------->>>>>>>>>> 最大化、最小化…

从零开始 Spring Boot 51:JPA 中的默认列值

从零开始 Spring Boot 51:JPA 中的默认列值 图源:简书 (jianshu.com) JPA 是一个 ORM 框架,因此,通常我们需要在实体类中定义表结构,这其中就包含可能的字段默认值。 本文介绍如何在 Hibernate(JPA&#…

HBase(6):计数操作

1 需求 查看HBase中的ORDER_INFO表,一共有多少条记录。 2 count命令 count命令专门用来统计一个表中有多少条数据。语法: count 表名 注意:这个操作是比较耗时的。在数据量大的这个命令可能会运行很久,真实环境不要使用该命令。…

【从零开始学习JAVA | 第二十五篇】泛型

目录 前言: 泛型: 额外拓展: 总结: 前言: 本文将详细介绍之前我们在JAVA 中一直在讲的泛型,各位感兴趣的同学可以点击进来观看。 泛型: 泛型是一种编程概念,它允许在定义类、接…

文章测试

Markdown示例 本文件的源码是一个markdown文件,也就是说在本工程中直接添加markdown即可嵌入到sphinx文档中。 关于使sphinx支持markdown的详细配置说明,请参考文档markdown-sphinx。 markdown的公式语法在sphinx可能不支持。 以下是markdown的语法使用示例 文…

PDF如何转换成Word?PDF转Word方法分享!​

PDF大家都不陌生了吧?作为打工人,学生党的大家都知道,PDF是现在不可或缺的文件传输工具之一,不仅可将文档转为Word,还可以转成excel,ppt等各种形式,其重要性不言而喻,那么今天小编就跟大家具体说…

Web自动化元素定位之xpath定位详解

Web自动化常见的定位方式 为什么要学习定位 1.让程序操作指定元素,就必须先找到此元素 2.程序不像人类用眼睛直接定位到元素 webDriver提供了八种定位元素的方式 定位方式总结 1.id、name、class_name、tag_name:根据元素的标签或元素的属性来进行定位 2.link_t…

gitLab配置ssh实现私钥访问

1.配置ssh文件 1.cd C:\Users\用户名\.ssh 找到文件夹 删除.ssh 里面所有其他文件方面我们配置要最新的 2.win r cmd 呼出命令行 ssh-keygen -t rsa -C "必须对应gitLab用户名" 3.生成文件夹拿到ssh 4.复制id_rsa_pub 文件的全部字符串 公钥给到GitLab服务器 2.公…