2015-10-11 15:16:25 +00:00
|
|
|
# Building KiCad from Source #
|
|
|
|
If you are a user and not a developer, please consider using one of the prebuilt packages
|
|
|
|
of KiCad which can be found at the [download][] page on the [KiCad website][]. Building KiCad
|
|
|
|
from source is not for the faint of heart and is not recommended unless you have reasonable
|
|
|
|
software development experience. This document contains the instructions on how to build KiCad
|
|
|
|
from source on the supported platforms. It is not intended as a guide for installing or building
|
2016-04-19 14:30:32 +00:00
|
|
|
[library dependencies](#library_dependencies). Please consult your platforms documentation for
|
2015-10-12 23:09:52 +00:00
|
|
|
installing packages or the source code when building the library dependencies. Currently the
|
2017-03-14 14:53:08 +00:00
|
|
|
supported platforms are Windows Versions 7-10, just about any version of Linux, and macOS
|
2018-02-21 16:41:51 +00:00
|
|
|
10.9-10.13. You may be able to build KiCad on other platforms but it is not supported. On
|
2017-03-14 14:53:08 +00:00
|
|
|
Windows and Linux the [GNU GCC][] is the only supported compiler and on macOS [Clang][] is the
|
2015-10-12 23:09:52 +00:00
|
|
|
only supported compiler.
|
2015-10-11 15:16:25 +00:00
|
|
|
|
|
|
|
[TOC]
|
|
|
|
|
|
|
|
# Development Tools # {#development_tools}
|
|
|
|
|
2015-10-12 23:09:52 +00:00
|
|
|
Before you begin building KiCad, there are a few tools required in addition to your compiler.
|
|
|
|
Some of these tools are required to build from source and some are optional.
|
2015-10-11 15:16:25 +00:00
|
|
|
|
|
|
|
## CMake Build Configuration Tool ## {#cmake}
|
|
|
|
|
|
|
|
[CMake][] is the build configuration and makefile generation tool used by KiCad. It is required.
|
|
|
|
|
|
|
|
|
2019-12-02 20:20:05 +00:00
|
|
|
## Git Version Control System ## {#git}
|
2015-10-11 15:16:25 +00:00
|
|
|
|
2019-12-02 20:20:05 +00:00
|
|
|
The official source code repository is hosted on [GitLab][] and requires [git][] to get
|
2016-09-17 19:49:20 +00:00
|
|
|
the latest source. If you prefer to use [GitHub][] there is a read only mirror of the official
|
2019-12-02 20:20:05 +00:00
|
|
|
KiCad repository. The previous official hosting location at [Launchpad][] is still active as
|
|
|
|
a mirror. Changes should be submitted as [merge requests][] via GitLab. The development team
|
|
|
|
will not review changes submitted on GitHub or Launchpad as those platforms are mirrors only.
|
2015-10-11 15:16:25 +00:00
|
|
|
|
|
|
|
## Doxygen Code Documentation Generator ## {#doxygen_section}
|
|
|
|
|
|
|
|
The KiCad source code is documented using [Doxygen][] which parses the KiCad source code files
|
|
|
|
and builds a dependency tree along with the source documentation into HTML. Doxygen is only
|
|
|
|
required if you are going to build the KiCad documentation.
|
|
|
|
|
|
|
|
## SWIG Simplified Wrapper and Interface Generator ## {#swig}
|
|
|
|
|
|
|
|
[SWIG][] is used to generate the Python scripting language extensions for KiCad. SWIG is not
|
|
|
|
required if you are not going to build the KiCad scripting extension.
|
|
|
|
|
|
|
|
|
|
|
|
# Library Dependencies # {#library_dependencies}
|
|
|
|
|
|
|
|
This section includes a list of library dependencies required to build KiCad. It does not
|
|
|
|
include any dependencies of the libraries. Please consult the library's documentation for any
|
|
|
|
additional dependencies. Some of these libraries are optional depending on you build
|
|
|
|
configuration. This is not a guide on how to install the library dependencies using you systems
|
|
|
|
package management tools or how to build the library from source. Consult the appropriate
|
|
|
|
documentation to perform these tasks.
|
|
|
|
|
|
|
|
## wxWidgets Cross Platform GUI Library## {#wxwidgets}
|
|
|
|
|
|
|
|
[wxWidgets][] is the graphical user interface (GUI) library used by KiCad. The current minimum
|
|
|
|
version is 3.0.0. However, 3.0.2 should be used whenever possible as there are some known bugs
|
|
|
|
in prior versions that can cause problems on some platforms. Please note that there are also
|
|
|
|
some platform specific patches that must be applied before building wxWidgets from source. These
|
|
|
|
patches can be found in the [patches folder][] in the KiCad source. These patches are named by
|
|
|
|
the wxWidgets version and platform name they should be applied against. wxWidgets must be built
|
|
|
|
with the --with-opengl option. If you installed the packaged version of wxWidgets on your system,
|
|
|
|
verify that it was built with this option.
|
|
|
|
|
|
|
|
## Boost C++ Libraries ## {#boost}
|
|
|
|
|
|
|
|
The [Boost][] C++ library is required only if you intend to build KiCad with the system installed
|
|
|
|
version of Boost instead of the default internally built version. If you use the system installed
|
|
|
|
version of Boost, version 1.56 or greater is required. Please note there are some platform
|
|
|
|
specific patches required to build a working Boost library. These patches can be found in the
|
|
|
|
[patches folder][] in the KiCad source. These patches are named by the platform name they should
|
|
|
|
be applied against.
|
|
|
|
|
|
|
|
## GLEW OpenGL Extension Wrangler Library ## {#glew}
|
|
|
|
|
|
|
|
The [OpenGL Extension Wrangler][GLEW] is an OpenGL helper library used by the KiCad graphics
|
|
|
|
abstraction library [GAL] and is always required to build KiCad.
|
2015-12-08 09:56:53 +00:00
|
|
|
|
2020-08-19 19:01:43 +00:00
|
|
|
## ZLib Library ## {#zlib}
|
|
|
|
|
|
|
|
The [ZLib][] development library is used by KiCad to handle compressed 3d models (.stpz and .wrz files)
|
|
|
|
and is always required to build KiCad.
|
|
|
|
|
2015-12-08 09:56:53 +00:00
|
|
|
## GLM OpenGL Mathematics Library ## {#glm}
|
|
|
|
|
|
|
|
The [OpenGL Mathematics Library][GLM] is an OpenGL helper library used by the KiCad graphics
|
|
|
|
abstraction library [GAL] and is always required to build KiCad.
|
2015-10-11 15:16:25 +00:00
|
|
|
|
|
|
|
## GLUT OpenGL Utility Toolkit Library ## {#glut}
|
|
|
|
|
|
|
|
The [OpenGL Utility Toolkit][GLUT] is an OpenGL helper library used by the KiCad graphics
|
|
|
|
abstraction library [GAL] and is always required to build KiCad.
|
|
|
|
|
|
|
|
## Cairo 2D Graphics Library ## {#cairo}
|
|
|
|
|
2016-04-19 14:30:32 +00:00
|
|
|
The [Cairo][] 2D graphics library is used as a fallback rendering canvas when OpenGL is not
|
2015-10-11 15:16:25 +00:00
|
|
|
available and is always required to build KiCad.
|
|
|
|
|
|
|
|
## Python Programming Language ## {#python}
|
|
|
|
|
2018-03-06 23:54:51 +00:00
|
|
|
The [Python][] programming language is used to provide scripting support to KiCad. It needs
|
|
|
|
to be installed unless the [KiCad scripting](#kicad_scripting) build configuration option is
|
|
|
|
disabled.
|
2015-10-11 15:16:25 +00:00
|
|
|
|
|
|
|
## wxPython Library ## {#wxpython}
|
|
|
|
|
2018-03-06 23:54:51 +00:00
|
|
|
The [wxPython][] library is used to provide a scripting console for Pcbnew. It needs to be
|
|
|
|
installed unless the [wxPython scripting](#wxpython_scripting) build configuration option is
|
|
|
|
disabled. When building KiCad with wxPython support, make sure the version of the wxWidgets
|
|
|
|
library and the version of wxPython installed on your system are the same. Mismatched versions
|
|
|
|
have been known to cause runtime issues.
|
2015-10-11 15:16:25 +00:00
|
|
|
|
2016-01-04 15:23:28 +00:00
|
|
|
## Curl Multi-Protocol File Transfer Library ## {#curl}
|
|
|
|
|
|
|
|
The [Curl Multi-Protocol File Transfer Library][libcurl] is used to provide secure internet
|
2018-03-06 23:54:51 +00:00
|
|
|
file transfer access for the [GitHub][] plug in. This library needs to be installed unless
|
|
|
|
the GitHub plug build option is disabled.
|
|
|
|
|
2018-08-02 17:11:04 +00:00
|
|
|
## OpenCascade Library ## {#oce}
|
2018-03-06 23:54:51 +00:00
|
|
|
|
2018-08-02 17:11:04 +00:00
|
|
|
The [OpenCascade Community Edition (OCE)][liboce] is used to provide support for loading and saving
|
2018-03-06 23:54:51 +00:00
|
|
|
3D model file formats such as STEP. This library needs to be installed unless the OCE build
|
|
|
|
option is disabled.
|
|
|
|
|
2018-08-02 17:11:04 +00:00
|
|
|
[Open CASCSADE Technology (OCC)][libocc] should also work as an alternative to OCE. Selection of
|
|
|
|
library Cascade library can be specified at build time. See the [STEP/IGES support](#oce_opt)
|
|
|
|
section.
|
|
|
|
|
2018-03-06 23:54:51 +00:00
|
|
|
## Ngspice Library ## {#ngspice}
|
|
|
|
|
2019-04-18 16:15:58 +00:00
|
|
|
The [Ngspice Library][libngspice] is used to provide Spice simulation support in the schematic
|
2018-03-06 23:54:51 +00:00
|
|
|
editor. Make sure the the version of ngspice library used was built with the--with-ngshared
|
|
|
|
option. This library needs to be installed unless the Spice build option is disabled.
|
2016-01-04 15:23:28 +00:00
|
|
|
|
2015-10-11 15:16:25 +00:00
|
|
|
# KiCad Build Configuration Options # {#build_opts}
|
|
|
|
|
|
|
|
KiCad has many build options that can be configured to build different options depending on
|
|
|
|
the availability of support for each option on a given platform. This section documents
|
|
|
|
these options and their default values.
|
|
|
|
|
|
|
|
## Scripting Support ## {#scripting_opt}
|
|
|
|
|
|
|
|
The KICAD_SCRIPTING option is used to enable building the Python scripting support into Pcbnew.
|
2019-06-20 16:23:57 +00:00
|
|
|
This options is enabled by default, and will disable all other KICAD_SCRIPTING_* options when
|
|
|
|
it is disabled.
|
2015-10-11 15:16:25 +00:00
|
|
|
|
2019-06-20 16:23:57 +00:00
|
|
|
## Python 3 Scripting Support ## {#python3}
|
2015-10-11 15:16:25 +00:00
|
|
|
|
2019-06-20 16:23:57 +00:00
|
|
|
The KICAD_SCRIPTING_PYTHON3 option is used to enable using Python 3 for the scripting support
|
|
|
|
instead of Python 2. This option is disabled by default and only is relevant if
|
|
|
|
[KICAD_SCRIPTING](#scripting_opt) is enabled.
|
2015-10-11 15:16:25 +00:00
|
|
|
|
2019-06-20 16:23:57 +00:00
|
|
|
## Scripting Module Support ## {#scripting_mod_opt}
|
2018-08-04 14:12:43 +00:00
|
|
|
|
2019-06-20 16:23:57 +00:00
|
|
|
The KICAD_SCRIPTING_MODULES option is used to enable building and installing the Python modules
|
|
|
|
supplied by KiCad. This option is enabled by default, but will be disabled if
|
|
|
|
[KICAD_SCRIPTING](#scripting_opt) is disabled.
|
2018-08-04 14:12:43 +00:00
|
|
|
|
2015-10-11 15:16:25 +00:00
|
|
|
## wxPython Scripting Support ## {#wxpython_opt}
|
|
|
|
|
|
|
|
The KICAD_SCRIPTING_WXPYTHON option is used to enable building the wxPython interface into
|
2019-06-20 16:23:57 +00:00
|
|
|
Pcbnew including the wxPython console. This option is enabled by default, but will be disabled if
|
|
|
|
[KICAD_SCRIPTING](#scripting_opt) is disabled.
|
2015-10-11 15:16:25 +00:00
|
|
|
|
2018-08-13 20:14:06 +00:00
|
|
|
## wxPython Phoenix Scripting Support ## {#wxpython_phoenix}
|
|
|
|
|
|
|
|
The KICAD_SCRIPTING_WXPYTHON_PHOENIX option is used to enable building the wxPython interface with
|
2019-06-20 16:23:57 +00:00
|
|
|
the new Phoenix binding instead of the legacy one. This option is disabled by default, and
|
|
|
|
enabling it requires [KICAD_SCRIPTING](#scripting_opt) to be enabled.
|
2018-08-13 20:14:06 +00:00
|
|
|
|
2019-06-05 18:00:57 +00:00
|
|
|
## Python Scripting Action Menu Support ## {#python_action_menu_opt}
|
|
|
|
|
|
|
|
The KICAD_SCRIPTING_ACTION_MENU option allows Python scripts to be added directly to the Pcbnew
|
2019-06-20 16:23:57 +00:00
|
|
|
menu. This option is enabled by default, but will be disabled if
|
|
|
|
[KICAD_SCRIPTING](#scripting_opt) is disabled. Please note that this option is highly
|
|
|
|
experimental and can cause Pcbnew to crash if Python scripts create an invalid object state
|
|
|
|
within Pcbnew.
|
2019-06-05 18:00:57 +00:00
|
|
|
|
2016-01-04 15:23:28 +00:00
|
|
|
## GitHub Plugin ## {#github_opt}
|
2015-10-11 15:16:25 +00:00
|
|
|
|
2016-01-04 15:23:28 +00:00
|
|
|
The BUILD_GITHUB_PLUGIN option is used to control if the GitHub plug in is built. This option is
|
2015-10-11 15:16:25 +00:00
|
|
|
enabled by default.
|
|
|
|
|
2016-08-12 14:00:35 +00:00
|
|
|
## Integrated Spice simulator ## {#spice_opt}
|
|
|
|
|
2017-12-29 22:38:42 +00:00
|
|
|
The KICAD_SPICE option is used to control if the Spice simulator interface for Eeschema is
|
|
|
|
built. When this option is enabled, it requires [ngspice][] to be available as a shared
|
|
|
|
library. This option is enabled by default.
|
2016-09-04 22:42:11 +00:00
|
|
|
|
2016-09-03 11:17:58 +00:00
|
|
|
## STEP/IGES support for the 3D viewer ## {#oce_opt}
|
|
|
|
|
|
|
|
The KICAD_USE_OCE is used for the 3D viewer plugin to support STEP and IGES 3D models. Build tools
|
|
|
|
and plugins related to OpenCascade Community Edition (OCE) are enabled with this option. When
|
2018-08-02 17:11:04 +00:00
|
|
|
enabled it requires [liboce][] to be available, and the location of the installed OCE library to be
|
2017-12-29 22:38:42 +00:00
|
|
|
passed via the OCE_DIR flag. This option is enabled by default.
|
2016-08-12 14:00:35 +00:00
|
|
|
|
2018-08-02 17:11:04 +00:00
|
|
|
Alternatively KICAD_USE_OCC can be used instead of OCE. Both options are not supposed to be enabled
|
|
|
|
at the same time.
|
|
|
|
|
2019-10-05 17:08:21 +00:00
|
|
|
## Development Analysis Tools ## {#dev_tools}
|
|
|
|
|
|
|
|
KiCad can be compiled with support for several features to aid in the catching and debugging of
|
|
|
|
runtime memory issues
|
|
|
|
|
|
|
|
### Valgrind support
|
|
|
|
|
|
|
|
The KICAD_USE_VALGRIND option is used to enable Valgrind's stack annotation feature in the tool framework.
|
|
|
|
This provides the ability for Valgrind to trace memory allocations and accesses in the tool framework
|
|
|
|
and reduce the number of false positives reported. This option is disabled by default.
|
|
|
|
|
|
|
|
### C++ standard library debugging
|
|
|
|
|
|
|
|
KiCad provides two options to enable debugging assertions contained in the GCC C++ standard library:
|
|
|
|
KICAD_STDLIB_DEBUG and KICAD_STDLIB_LIGHT_DEBUG. Both these options are disabled by default, and only
|
|
|
|
one should be turned on at a time with KICAD_STDLIB_DEBUG taking precedence.
|
|
|
|
|
|
|
|
The KICAD_STDLIB_LIGHT_DEBUG option enables the light-weight standard library assertions by passing
|
|
|
|
`_GLIBCXX_ASSERTIONS ` into CXXFLAGS. This enables things such as bounds checking on strings, arrays
|
|
|
|
and vectors, as well as null pointer checks for smart pointers.
|
|
|
|
|
|
|
|
The KICAD_STDLIB_DEBUG option enables the full set of standard library assertions by passing
|
|
|
|
`_GLIBCXX_DEBUG` into CXXFLAGS. This enables full debugging support for the standard library.
|
|
|
|
|
|
|
|
### Address Sanitizer support
|
|
|
|
|
|
|
|
The KICAD_SANITIZE option enables Address Sanitizer support to trace memory allocations and
|
|
|
|
accesses to identify problems. This option is disabled by default. The Address Sanitizer
|
|
|
|
contains several runtime options to tailor its behavior that are described in more detail in its
|
|
|
|
[documentation](https://github.com/google/sanitizers/wiki/AddressSanitizerFlags).
|
|
|
|
|
|
|
|
This option is not supported on all build systems, and is known to have problems when using
|
|
|
|
mingw.
|
|
|
|
|
2016-09-08 18:59:55 +00:00
|
|
|
## Demos and Examples ## {#demo_install_opt}
|
|
|
|
|
|
|
|
The KiCad source code includes some demos and examples to showcase the program. You can choose
|
|
|
|
whether install them or not with the KICAD_INSTALL_DEMOS option. You can also select where to
|
|
|
|
install them with the KICAD_DEMOS variable. On Linux the demos are installed in
|
|
|
|
$PREFIX/share/kicad/demos by default.
|
|
|
|
|
2019-04-17 11:41:15 +00:00
|
|
|
## Quality assurance (QA) unit tests ## {#quality_assurance_tests_opt}
|
2019-04-16 16:02:41 +00:00
|
|
|
|
2019-04-17 11:41:15 +00:00
|
|
|
The KICAD_BUILD_QA_TESTS option allows building unit tests binaries for quality assurance as part
|
|
|
|
of the default build. This option is enabled by default.
|
|
|
|
|
|
|
|
If this option is disabled, the QA binaries can still be built by manually specifying the target.
|
|
|
|
For example, with `make`:
|
|
|
|
|
|
|
|
* Build all QA binaries: `make qa_all`
|
|
|
|
* Build a specific test: `make qa_pcbnew`
|
|
|
|
* Build all unit tests: `make qa_all_tests`
|
|
|
|
* Build all test tool binaries: `make qa_all_tools`
|
2019-04-16 16:02:41 +00:00
|
|
|
|
2019-04-18 16:15:58 +00:00
|
|
|
For more information about testing KiCad, see [this page](testing.md).
|
|
|
|
|
2018-03-06 23:54:51 +00:00
|
|
|
## KiCad Build Version ## {#build_version_opt}
|
2016-09-17 19:49:20 +00:00
|
|
|
|
2018-03-06 23:54:51 +00:00
|
|
|
The KiCad version string is defined by the output of `git describe --dirty` when git is available
|
|
|
|
or the version string defined in CMakeModules/KiCadVersion.cmake with the value of
|
2019-12-18 17:24:07 +00:00
|
|
|
KICAD_VERSION_EXTRA appended to the former. If the KICAD_VERSION_EXTRA variable is not defined,
|
2018-03-06 23:54:51 +00:00
|
|
|
it is not appended to the version string. If the KICAD_VERSION_EXTRA variable is defined it
|
|
|
|
is appended along with a leading '-' to the full version string as follows:
|
2016-11-24 17:37:34 +00:00
|
|
|
|
2018-03-06 23:54:51 +00:00
|
|
|
(KICAD_VERSION[-KICAD_VERSION_EXTRA])
|
2016-11-24 17:37:34 +00:00
|
|
|
|
2018-03-06 23:54:51 +00:00
|
|
|
The build script automatically creates the version string information from the [git][] repository
|
|
|
|
information as follows:
|
2016-09-17 19:49:20 +00:00
|
|
|
|
2018-03-06 23:54:51 +00:00
|
|
|
(5.0.0-rc2-dev-100-g5a33f0960)
|
2016-09-17 19:49:20 +00:00
|
|
|
|
|
2018-03-06 23:54:51 +00:00
|
|
|
output of `git describe --dirty` if git is available.
|
2016-09-17 19:49:20 +00:00
|
|
|
|
2019-04-08 19:28:14 +00:00
|
|
|
|
|
|
|
## KiCad Config Directory ## {#config_dir_opt}
|
|
|
|
|
|
|
|
The default KiCad configuration directory is `kicad`. On Linux this is located at
|
|
|
|
`~/.config/kicad`, on MSW, this is `C:\Documents and Settings\username\Application Data\kicad` and
|
|
|
|
on MacOS, this is `~/Library/Preferences/kicad`. If the installation package would like to, it may
|
|
|
|
specify an alternate configuration name instead of `kicad`. This may be useful for versioning
|
|
|
|
the configuration parameters and allowing the use of, e.g. `kicad5` and `kicad6` concurrently without
|
|
|
|
losing configuration data.
|
|
|
|
|
|
|
|
This is set by specifying the KICAD_CONFIG_DIR string at compile time.
|
|
|
|
|
2015-10-11 15:16:25 +00:00
|
|
|
# Getting the KiCad Source Code ## {#getting_src}
|
|
|
|
|
|
|
|
There are several ways to get the KiCad source. If you want to build the stable version you
|
2019-12-02 20:20:05 +00:00
|
|
|
can down load the source archive from the [GitLab][] repository. Use tar or some
|
2015-10-11 15:16:25 +00:00
|
|
|
other archive program to extract the source on your system. If you are using tar, use the
|
|
|
|
following command:
|
|
|
|
|
2018-12-06 06:22:43 +00:00
|
|
|
tar -xaf kicad_src_archive.tar.xz
|
2015-10-11 15:16:25 +00:00
|
|
|
|
2019-12-02 20:20:05 +00:00
|
|
|
If you are contributing directly to the KiCad project on GitLab, you can create a local
|
2016-09-04 22:42:11 +00:00
|
|
|
copy on your machine by using the following command:
|
2015-10-11 15:16:25 +00:00
|
|
|
|
2019-12-02 20:20:05 +00:00
|
|
|
git clone https://gitlab.com/kicad/code/kicad.git
|
2015-10-11 15:16:25 +00:00
|
|
|
|
|
|
|
Here is a list of source links:
|
|
|
|
|
2019-12-02 20:20:05 +00:00
|
|
|
Stable release archives: https://kicad-pcb.org/download/source/
|
2015-10-11 15:16:25 +00:00
|
|
|
|
2019-12-02 20:20:05 +00:00
|
|
|
Development branch: https://gitlab.com/kicad/code/kicad/tree/master
|
2015-10-11 15:16:25 +00:00
|
|
|
|
2016-01-04 15:23:28 +00:00
|
|
|
GitHub mirror: https://github.com/KiCad/kicad-source-mirror
|
2015-10-11 15:16:25 +00:00
|
|
|
|
|
|
|
# Building KiCad on Linux # {#build_linux}
|
|
|
|
|
2015-10-12 23:09:52 +00:00
|
|
|
To perform a full build on Linux, run the following commands:
|
2015-10-12 13:42:09 +00:00
|
|
|
|
2015-12-29 12:14:35 +00:00
|
|
|
cd <your kicad source mirror>
|
2015-10-12 13:42:09 +00:00
|
|
|
mkdir -p build/release
|
|
|
|
mkdir build/debug # Optional for debug build.
|
|
|
|
cd build/release
|
|
|
|
cmake -DCMAKE_BUILD_TYPE=Release \
|
|
|
|
../../
|
|
|
|
make
|
|
|
|
sudo make install
|
2015-10-11 15:16:25 +00:00
|
|
|
|
|
|
|
If the CMake configuration fails, determine the missing dependencies and install them on your
|
|
|
|
system. By default, CMake sets the install path on Linux to /usr/local. Use the
|
|
|
|
CMAKE_INSTALL_PREFIX option to specify a different install path.
|
|
|
|
|
|
|
|
# Building KiCad on Windows # {#build_windows}
|
|
|
|
|
|
|
|
The preferred Windows build environment is [MSYS2][]. The [MinGW][] build environment is still
|
|
|
|
supported but it is not recommended because the developer is responsible for building *all* of
|
|
|
|
the dependencies from source which is a huge and frustrating undertaking. The [MSYS2][] project
|
|
|
|
provides packages for all of the require dependencies to build KiCad. To setup the [MSYS2][]
|
|
|
|
build environment, depending on your system download and run either the [MSYS2 32-bit Installer][]
|
|
|
|
or the [MSYS2 64-bit Installer][]. After the installer is finished, update to the latest
|
2018-03-21 18:33:33 +00:00
|
|
|
package versions by running the `msys2_shell.cmd` file located in the MSYS2 install path and
|
2015-10-11 15:16:25 +00:00
|
|
|
running the command `pacman -Syu`. If the msys2-runtime package is updated, close the shell
|
2018-03-21 18:33:33 +00:00
|
|
|
and run `msys2_shell.cmd`.
|
2015-10-11 15:16:25 +00:00
|
|
|
|
2018-03-21 18:33:33 +00:00
|
|
|
## Building using MSYS2 ## {#msys2_build}
|
2015-10-11 15:16:25 +00:00
|
|
|
|
2018-03-21 18:33:33 +00:00
|
|
|
The following commands assume you are building for 64-bit Windows, and that you already have
|
|
|
|
the KiCad source code in a folder called `kicad-source` in your home directory. See below
|
|
|
|
for changes if you need to build for 32-bit instead. Run `mingw64.exe` from the MSYS2
|
|
|
|
install path. At the command prompt run the the following commands:
|
2015-10-11 15:16:25 +00:00
|
|
|
|
2017-01-31 20:24:54 +00:00
|
|
|
pacman -S base-devel \
|
2018-03-06 23:54:51 +00:00
|
|
|
git \
|
2017-01-31 20:24:54 +00:00
|
|
|
mingw-w64-x86_64-cmake \
|
2015-10-12 13:42:09 +00:00
|
|
|
mingw-w64-x86_64-doxygen \
|
|
|
|
mingw-w64-x86_64-gcc \
|
|
|
|
mingw-w64-x86_64-python2 \
|
|
|
|
mingw-w64-x86_64-pkg-config \
|
|
|
|
mingw-w64-x86_64-swig \
|
|
|
|
mingw-w64-x86_64-boost \
|
|
|
|
mingw-w64-x86_64-cairo \
|
|
|
|
mingw-w64-x86_64-glew \
|
2015-12-22 14:19:00 +00:00
|
|
|
mingw-w64-x86_64-curl \
|
2015-10-12 13:42:09 +00:00
|
|
|
mingw-w64-x86_64-wxPython \
|
2016-03-11 13:20:31 +00:00
|
|
|
mingw-w64-x86_64-wxWidgets \
|
|
|
|
mingw-w64-x86_64-toolchain \
|
2018-03-06 23:54:51 +00:00
|
|
|
mingw-w64-x86_64-glm \
|
|
|
|
mingw-w64-x86_64-oce \
|
2020-08-19 20:49:23 +00:00
|
|
|
mingw-w64-x86_64-ngspice \
|
|
|
|
mingw-w64-x86_64-zlib
|
2015-10-12 13:42:09 +00:00
|
|
|
cd kicad-source
|
|
|
|
mkdir -p build/release
|
|
|
|
mkdir build/debug # Optional for debug build.
|
|
|
|
cd build/release
|
|
|
|
cmake -DCMAKE_BUILD_TYPE=Release \
|
|
|
|
-G "MSYS Makefiles" \
|
|
|
|
-DCMAKE_PREFIX_PATH=/mingw64 \
|
|
|
|
-DCMAKE_INSTALL_PREFIX=/mingw64 \
|
|
|
|
-DDEFAULT_INSTALL_PATH=/mingw64 \
|
|
|
|
../../
|
|
|
|
make install
|
2015-10-11 15:16:25 +00:00
|
|
|
|
2018-03-21 18:33:33 +00:00
|
|
|
For 32-bit builds, run `mingw32.exe` and change `x86_64` to `i686` in the package names and
|
2015-12-02 18:57:54 +00:00
|
|
|
change the paths in the cmake configuration from `/mingw64` to `/mingw32`.
|
|
|
|
|
2018-03-21 18:33:33 +00:00
|
|
|
For debug builds, run the cmake command with `-DCMAKE_BUILD_TYPE=Debug` from the `build/debug` folder.
|
2015-12-02 18:57:54 +00:00
|
|
|
|
|
|
|
## Known MSYS2 Build Issues ## {#known_issues_msys2}
|
|
|
|
|
|
|
|
There are some known issues that are specific to MSYS2. This section provides a list of the
|
|
|
|
currently known issues when building KiCad using MSYS2.
|
|
|
|
|
|
|
|
|
|
|
|
### 64-bit Package of Boost 1.59 ### {#ki_msys2_64bit_boost}
|
|
|
|
|
|
|
|
The context library of the x86_64 package of Boost version 1.59 is broken and will cause KiCad
|
2015-12-29 12:14:35 +00:00
|
|
|
to crash. You must downgrade to version 1.57 by running the command:
|
2015-12-02 18:57:54 +00:00
|
|
|
|
|
|
|
pacman -U /var/cache/pacman/pkg/mingw-w64-x86_64-boost-1.57.0-4-any.pkg.tar.xz
|
|
|
|
|
|
|
|
If the file mingw-w64-x86_64-boost-1.57.0-4-any.pkg.tar.xz is no longer in your pacman cache,
|
2018-03-08 02:06:30 +00:00
|
|
|
you will have to download it from the [MSYS2 64-bit SourceForge repo][]. You should also
|
2015-12-02 18:57:54 +00:00
|
|
|
configure pacman to prevent upgrading the 64-bit Boost package by adding:
|
|
|
|
|
|
|
|
IgnorePkg = mingw-w64-x86_64-boost
|
|
|
|
|
|
|
|
to your /etc/pacman.conf file.
|
|
|
|
|
2019-05-08 12:37:11 +00:00
|
|
|
### Building with Boost 1.70 ### {#ki_msys2_boost_1_70}
|
|
|
|
|
|
|
|
There is an issue building KiCad with Boost version 1.70 due to CMake not defining the proper
|
|
|
|
link libraries during configuration. Boost 1.70 can be used but `-DBoost_NO_BOOST_CMAKE=ON`
|
|
|
|
needs to be added during CMake configuration to insure the link libraries are properly generated.
|
|
|
|
|
2018-03-08 02:03:04 +00:00
|
|
|
### Building OCE from source
|
|
|
|
|
|
|
|
KiCad requires OCE by default, and the version installed by `pacman` can cause build errors in
|
|
|
|
x86_64 systems as of March 2018. In order to work around this, you can build OCE from source on
|
|
|
|
these systems. Building OCE on Windows requires that you place the source code in a very short
|
|
|
|
directory path, otherwise you will run into errors caused by the maximum path length on Windows.
|
|
|
|
In the example below, the `MINGW-packages` repository is cloned to `/c/mwp`, which is equivalent to
|
|
|
|
`C:\mwp` in Windows path terminology. You may wish to change the destination of the `git clone`
|
|
|
|
command if you do not want to place it on the root of your C drive, but if you run in to strange
|
|
|
|
compilation errors about missing files, it is probably because your path is too long.
|
|
|
|
|
|
|
|
git clone https://github.com/Alexpux/MINGW-packages /c/mwp
|
|
|
|
cd /c/mwp/mingw-w64-oce
|
|
|
|
makepkg-mingw -is
|
2015-12-02 18:57:54 +00:00
|
|
|
|
2017-03-14 14:53:08 +00:00
|
|
|
# Building KiCad on macOS # {#build_osx}
|
2015-10-11 15:16:25 +00:00
|
|
|
|
2018-07-23 13:15:48 +00:00
|
|
|
As of V5, building and packaging for macOS can be done using [kicad-mac-builder][],
|
|
|
|
which downloads, patches, builds, and packages for macOS. It is used to create the official
|
|
|
|
releases and nightlies, and it reduces the complexity of setting up a build environment to a command
|
|
|
|
or two. Usage of kicad-mac-builder is detailed at on its website.
|
2017-03-14 14:53:08 +00:00
|
|
|
|
2018-07-23 13:15:48 +00:00
|
|
|
If you wish to build without kicad-mac-builder, please use the following and its source code
|
|
|
|
as reference. Building on macOS requires building dependency libraries that require patching
|
|
|
|
in order to work correctly.
|
|
|
|
|
|
|
|
In the following set of commands, replace the macOS version number (i.e. 10.11) with the desired
|
2017-03-14 14:53:08 +00:00
|
|
|
minimum version. It may be easiest to build for the same version you are running.
|
2015-10-11 15:16:25 +00:00
|
|
|
|
2018-04-02 22:27:37 +00:00
|
|
|
KiCad currently won't work with a stock version of wxWidgets that can be downloaded or
|
|
|
|
installed by package managers like MacPorts or Homebrew. To avoid having to deal with
|
|
|
|
patches a [KiCad fork of wxWidgets][] is being maintained on GitHub. All the needed patches
|
|
|
|
and some other fixes/improvements are contained in the `kicad/macos-wx-3.0` branch.
|
2018-02-21 16:41:51 +00:00
|
|
|
|
|
|
|
To perform a wxWidgets build, execute the following commands:
|
|
|
|
|
|
|
|
cd <your wxWidgets build folder>
|
2019-12-22 01:23:45 +00:00
|
|
|
git clone -b kicad/macos-wx-3.0 https://gitlab.com/kicad/code/wxWidgets.git
|
2018-02-21 16:41:51 +00:00
|
|
|
mkdir wx-build
|
|
|
|
cd wx-build
|
|
|
|
../wxWidgets/configure \
|
2015-10-12 13:42:09 +00:00
|
|
|
--prefix=`pwd`/../wx-bin \
|
|
|
|
--with-opengl \
|
|
|
|
--enable-aui \
|
|
|
|
--enable-html \
|
|
|
|
--enable-stl \
|
2019-12-22 01:23:45 +00:00
|
|
|
--enable-richtext \
|
2015-10-12 13:42:09 +00:00
|
|
|
--with-libjpeg=builtin \
|
|
|
|
--with-libpng=builtin \
|
|
|
|
--with-regex=builtin \
|
|
|
|
--with-libtiff=builtin \
|
|
|
|
--with-zlib=builtin \
|
|
|
|
--with-expat=builtin \
|
|
|
|
--without-liblzma \
|
2018-07-23 13:15:48 +00:00
|
|
|
--with-macosx-version-min=10.11 \
|
2015-10-12 13:42:09 +00:00
|
|
|
--enable-universal-binary=i386,x86_64 \
|
|
|
|
CC=clang \
|
|
|
|
CXX=clang++
|
2018-02-21 16:41:51 +00:00
|
|
|
make
|
|
|
|
make install
|
2015-10-11 15:16:25 +00:00
|
|
|
|
2018-02-21 16:41:51 +00:00
|
|
|
If everything works you will find the wxWidgets binaries in `<your wxWidgets build folder>/wx-bin`.
|
|
|
|
Now, build a basic KiCad without Python scripting using the following commands:
|
2015-10-11 15:16:25 +00:00
|
|
|
|
2018-02-21 16:41:51 +00:00
|
|
|
cd <your kicad source mirror>
|
2015-10-12 13:42:09 +00:00
|
|
|
mkdir -p build/release
|
|
|
|
mkdir build/debug # Optional for debug build.
|
|
|
|
cd build/release
|
|
|
|
cmake -DCMAKE_C_COMPILER=clang \
|
|
|
|
-DCMAKE_CXX_COMPILER=clang++ \
|
2018-07-23 13:15:48 +00:00
|
|
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.11 \
|
2018-02-21 16:41:51 +00:00
|
|
|
-DwxWidgets_CONFIG_EXECUTABLE=<your wxWidgets build folder>/wx-bin/bin/wx-config \
|
|
|
|
-DKICAD_SCRIPTING=OFF \
|
|
|
|
-DKICAD_SCRIPTING_MODULES=OFF \
|
|
|
|
-DKICAD_SCRIPTING_WXPYTHON=OFF \
|
|
|
|
-DCMAKE_INSTALL_PREFIX=../bin \
|
|
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
|
|
../../
|
|
|
|
make
|
|
|
|
make install
|
|
|
|
|
|
|
|
If the CMake configuration fails, determine the missing dependencies and install them on your
|
|
|
|
system or disable the corresponding KiCad feature. If everything works you will get self-contained
|
|
|
|
application bundles in the `build/bin` folder.
|
|
|
|
|
|
|
|
Building KiCad with Python scripting is more complex and won't be covered in detail here.
|
|
|
|
You will have to build wxPython against the wxWidgets source of the KiCad fork - a stock wxWidgets
|
|
|
|
that might be bundled with the wxPython package won't work. Please see wxPython documentation
|
|
|
|
or [macOS bundle build scripts][] (`compile_wx.sh`) on how to do this. Then, use a CMake
|
|
|
|
configuration as follows to point it to your own wxWidgets/wxPython:
|
|
|
|
|
|
|
|
cmake -DCMAKE_C_COMPILER=clang \
|
|
|
|
-DCMAKE_CXX_COMPILER=clang++ \
|
|
|
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 \
|
|
|
|
-DwxWidgets_CONFIG_EXECUTABLE=<your wxWidgets build folder>/wx-bin/bin/wx-config \
|
|
|
|
-DPYTHON_EXECUTABLE=<path-to-python-exe>/python \
|
|
|
|
-DPYTHON_SITE_PACKAGE_PATH=<your wxWidgets build folder>/wx-bin/lib/python2.7/site-packages \
|
2015-10-12 13:42:09 +00:00
|
|
|
-DCMAKE_INSTALL_PREFIX=../bin \
|
|
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
|
|
../../
|
2015-10-11 15:16:25 +00:00
|
|
|
|
2015-10-12 23:09:52 +00:00
|
|
|
# Known Issues # {#known_issues}
|
|
|
|
|
2015-12-02 18:57:54 +00:00
|
|
|
There are some known issues that effect all platforms. This section provides a list of the
|
|
|
|
currently known issues when building KiCad on any platform.
|
2015-10-12 23:09:52 +00:00
|
|
|
|
|
|
|
## Boost C++ Library Issues ## {#boost_issue}
|
|
|
|
|
|
|
|
As of version 5 of [GNU GCC][], using the default configuration of downloading, patching, and
|
|
|
|
building of Boost 1.54 will cause the KiCad build to fail. Therefore a newer version of Boost
|
|
|
|
must be used to build KiCad. If your system has Boost 1.56 or greater installed, you job is
|
2016-05-10 09:39:13 +00:00
|
|
|
straight forward. If your system does not have Boost 1.56 or greater installed, you will have
|
|
|
|
to download and [build Boost][] from source. If you are building Boost on windows using [MinGW][]
|
|
|
|
you will have to apply the Boost patches in the KiCad source [patches folder][].
|
2015-10-12 23:09:52 +00:00
|
|
|
|
|
|
|
|
2015-10-11 15:16:25 +00:00
|
|
|
[download]: http://kicad-pcb.org/download/
|
|
|
|
[KiCad website]: http://kicad-pcb.org/
|
|
|
|
[GNU GCC]: https://gcc.gnu.org/
|
|
|
|
[Clang]: http://clang.llvm.org/
|
|
|
|
[CMake]: https://cmake.org/
|
2016-09-04 22:42:11 +00:00
|
|
|
[Launchpad]: https://code.launchpad.net/kicad/
|
2015-10-11 15:16:25 +00:00
|
|
|
[GIT]: https://git-scm.com/
|
2016-01-04 15:23:28 +00:00
|
|
|
[GitHub]: https://github.com/KiCad/kicad-source-mirror
|
2019-12-02 20:20:05 +00:00
|
|
|
[GitLab]: https://gitlab.com/kicad/code/kicad
|
2016-08-12 14:00:35 +00:00
|
|
|
[ngspice]: http://ngspice.sourceforge.net/
|
2019-01-02 01:05:32 +00:00
|
|
|
[Doxygen]: http://www.doxygen.nl
|
2015-10-11 15:16:25 +00:00
|
|
|
[mailing list]: https://launchpad.net/~kicad-developers
|
|
|
|
[SWIG]: http://www.swig.org/
|
|
|
|
[wxWidgets]: http://wxwidgets.org/
|
|
|
|
[patches folder]: http://bazaar.launchpad.net/~kicad-product-committers/kicad/product/files/head:/patches/
|
|
|
|
[Boost]: http://www.boost.org/
|
|
|
|
[GLEW]: http://glew.sourceforge.net/
|
|
|
|
[GLUT]: https://www.opengl.org/resources/libraries/glut/
|
|
|
|
[Cairo]: http://cairographics.org/
|
|
|
|
[Python]: https://www.python.org/
|
|
|
|
[wxPython]: http://wxpython.org/
|
2019-12-02 20:20:05 +00:00
|
|
|
[merge requests]: https://gitlab.com/kicad/code/kicad/merge_requests
|
2018-03-08 02:06:30 +00:00
|
|
|
[MSYS2]: http://www.msys2.org/
|
|
|
|
[MSYS2 32-bit Installer]: http://repo.msys2.org/distrib/i686/msys2-i686-20161025.exe
|
|
|
|
[MSYS2 64-bit Installer]: http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20161025.exe
|
2015-10-11 15:16:25 +00:00
|
|
|
[PKGBUILD]: https://github.com/Alexpux/MINGW-packages/blob/master/mingw-w64-kicad-git/PKGBUILD
|
2018-07-23 13:15:48 +00:00
|
|
|
[kicad-mac-builder]:https://github.com/KiCad/kicad-mac-builder
|
2018-02-21 16:41:51 +00:00
|
|
|
[KiCad fork of wxWidgets]:https://github.com/KiCad/wxWidgets
|
2015-10-12 23:09:52 +00:00
|
|
|
[MinGW]: http://mingw.org/
|
|
|
|
[build Boost]: http://www.boost.org/doc/libs/1_59_0/more/getting_started/index.html
|
2015-12-02 18:57:54 +00:00
|
|
|
[MSYS2 64-bit SourceForge repo]: http://sourceforge.net/projects/msys2/files/REPOS/MINGW/x86_64/
|
2016-01-04 15:23:28 +00:00
|
|
|
[libcurl]: http://curl.haxx.se/libcurl/
|
2016-01-04 22:00:42 +00:00
|
|
|
[GLM]: http://glm.g-truc.net/
|
2016-09-17 19:49:20 +00:00
|
|
|
[git]: https://git-scm.com/
|
2018-03-06 23:54:51 +00:00
|
|
|
[liboce]: https://github.com/tpaviot/oce
|
2018-08-02 17:11:04 +00:00
|
|
|
[libocc]: https://www.opencascade.com/content/overview
|
2018-03-06 23:54:51 +00:00
|
|
|
[libngspice]: https://sourceforge.net/projects/ngspice/
|
2020-08-19 20:49:23 +00:00
|
|
|
[ZLib]: http://www.zlib.net/
|