212 lines
7.4 KiB
Plaintext
212 lines
7.4 KiB
Plaintext
Compiling KiCad from Source
|
|
===========================
|
|
KiCad Documentation Team
|
|
Last revised on 12-mars-2012 by jp Charras
|
|
|
|
Introduction
|
|
------------
|
|
This is a generic guide how to compile kicad from scratch. On windows and linux.
|
|
If you need something more distribution specific or the experimental mac-osx port
|
|
read the other documents in the Documentation/compiling folder.
|
|
|
|
Installation of Tools
|
|
---------------------
|
|
On windows:
|
|
|
|
Get msys and mingw here:
|
|
http://mingw.org/
|
|
msys sets up a development environment that allows the bash shell to run.
|
|
mingw are a set of tools that run on windows or under msys. You will need
|
|
at least the following mingw packages: make, gcc, g++, binutils, autoconf, and
|
|
automake.
|
|
|
|
On linux:
|
|
|
|
Install "mesa". Use your package manager to install the
|
|
development libaries.
|
|
|
|
After a fresh install you need the following packages to compile and run
|
|
KiCad from source.
|
|
|
|
CMake - Cross-platform make
|
|
GLUT - The OpenGL Utility Library
|
|
wxGTK or wxWidgets - The wxWidgets GUI toolkit with GTK+ bindings
|
|
|
|
Boost - Collection of portable C++ source libraries
|
|
Because boost is in the repository of kicad you don't need to install them.
|
|
|
|
Useful, but not required:
|
|
Doxygen - Documentation system for several programming languages
|
|
|
|
|
|
Compiler and basic development tools
|
|
-------------
|
|
Make sure g++, make and other tools are in your path.
|
|
If windows, then try running g++ and make from within your msys bash shell.
|
|
|
|
PLEASE NOTE: g++ 4.7.1 at least (possibly the 4.7.x series) is known to
|
|
miscompile pcbnew (it get zones wrong) with -O2; using -O1 is a suitable
|
|
workaround until they fix the compiler.
|
|
|
|
Install or Build wxWidgets
|
|
--------------------------
|
|
|
|
WARNING:
|
|
see wxWidgets_patch_notes.txt for patches and issues in wxWidgets.
|
|
|
|
If on Windows, download
|
|
http://sourceforge.net/projects/wxwindows/files/wxAll/2.9.3/wxWidgets-2.9.3.zip/download
|
|
or a newer version.
|
|
Do NOT use previous versions which all have annoying issues for KiCad.
|
|
Start msys so you have a bash shell.
|
|
Note also since 2.9 versions no need to build a "debug" version of the wxWidgets library,
|
|
the release abd the debug version are same.
|
|
|
|
Unzip the wxWidgets zip file into the build directory. Change directories into
|
|
there, and then:
|
|
|
|
mkdir Release
|
|
cd Release
|
|
../configure --enable-unicode --enable-monolithic=no --disable-shared --with-opengl
|
|
make
|
|
|
|
and under Linux, but not under Windows:
|
|
sudo make install that install wxWidgets libs and headers in /usr/local/
|
|
|
|
|
|
If on linux, you can use your package manager to install the
|
|
development versions of the wxWidgets packages which include the C++ headers. An
|
|
alternative is to build static libaries from source. Verify that wx-config is in
|
|
your path by running it from a command prompt. Linux users then go to next step.
|
|
|
|
Install CMake
|
|
-------------
|
|
If windows, download the installation binary for windows from cmake.org.
|
|
Install that and choose to add cmake to your path during installation. You
|
|
will have to restart and command shells for the new path to take effect.
|
|
Verify that cmake is in your path by trying to run it from a command prompt.
|
|
|
|
|
|
If linux, use your package manager to install cmake. You should get cmake 2.6.4
|
|
or later. If only an older one is available in your package repository, build
|
|
cmake from source. Verify that cmake is in your path by trying to run it from a
|
|
command prompt.
|
|
|
|
|
|
Obtain Sources
|
|
--------------
|
|
You can use the Launchpad repository or a tar file for this. See the wiki.
|
|
To download files from Launchpad repository, you should install bazaar (bzr) that is a
|
|
version control system like subversion, mercurial, git...
|
|
|
|
Launchpad repository handle 2 branches for KiCda sources:
|
|
- a testing branch (used by developers)
|
|
- a stable branch (a copy of the testing branch, when this testing branch is near a stable state))
|
|
|
|
Testing branch:
|
|
bzr branch lp:kicad kicad_testing
|
|
|
|
Stable branch:
|
|
bzr branch lp:kicad/stable kicad_stable
|
|
|
|
Components and Footprints libraries
|
|
bzr branch lp:~kicad-lib-committers/kicad/library kicad_libraries
|
|
|
|
Documentation and translations:
|
|
bzr branch lp:~kicad-developers/kicad/doc kicad_doc
|
|
|
|
Create Makefiles with CMake
|
|
---------------------------
|
|
If windows, go into your msys shell. Linux and windows users both then make
|
|
two "out of source" build directories:
|
|
cd <kicadSource>
|
|
mkdir -p build/release
|
|
mkdir build/debug (if you want a debug version of KiCad)
|
|
cd build/release
|
|
|
|
On either cmake command line shown below, you can optionally include
|
|
-DCMAKE_INSTALL_PREFIX=<finallInstallDir>
|
|
|
|
If windows, run the following command:
|
|
cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DKICAD_TESTING_VERSION=ON -DwxWidgets_ROOT_DIR=<wxInstallDir> ../../
|
|
|
|
If linux, run instead the following command:
|
|
cmake -DCMAKE_BUILD_TYPE=Release ../../
|
|
|
|
Take a look at CMakeCache.txt, and in particular CMAKE_INSTALL_PREFIX, which
|
|
gives the final install directory. If not what you want, edit it with a text
|
|
editor and re-run the same cmake command again, but with no
|
|
-DCMAKE_INSTALL_PREFIX given on the command line.
|
|
|
|
Compiling with Make
|
|
------------------~
|
|
You compile Kicad here. You will only need to do step 8) again when one of the
|
|
CMakeLists.txt files change. If windows, you must be in your msys shell.
|
|
On either platform then:
|
|
|
|
cd <kicadSource>/build/release
|
|
make
|
|
[sudo] make install
|
|
|
|
You are now done unless you want to make a Debug build.
|
|
|
|
|
|
Compiling a Debug version
|
|
-------------------------
|
|
cd <kicadSource>/build/debug
|
|
|
|
On either cmake command line shown below, you can optionally include
|
|
-DCMAKE_INSTALL_PREFIX=<finallInstallDir> before the final ../../ argument.
|
|
Although normally you do not install the Debug binaries, you can debug them
|
|
where they were built.
|
|
|
|
If windows, run the following command:
|
|
cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Debug -DKICAD_TESTING_VERSION=ON -DwxWidgets_ROOT_DIR=<wxInstallDir> ../../
|
|
where <wxInstallDir> is <wxWidgets path>/Release
|
|
|
|
If linux, run instead the following command:
|
|
cmake -DCMAKE_BUILD_TYPE=Debug -DwxWidgets_USE_DEBUG=ON ../../
|
|
|
|
Make the Debug binaries:
|
|
make
|
|
|
|
|
|
Fine-tune Build Process
|
|
-----------------------
|
|
These should be set from command line:
|
|
|
|
One of these 2 option *must* be set to ON:
|
|
KICAD_STABLE_VERSION or KICAD_TESTING_VERSION
|
|
** KICAD_STABLE_VERSION:
|
|
set this option to ON to build the stable version of KICAD. mainly used to set version ID
|
|
Usually set for kicad version downloaded from stable branch
|
|
|
|
** KICAD_TESTING_VERSION
|
|
set this option to ON to build the stable version of KICAD. mainly used to set version ID
|
|
Usually set for kicad version downloaded from testing branch
|
|
|
|
CMAKE_BUILD_TYPE Release/Debug (REQUIRED)
|
|
Choose build type: Release/Debug.
|
|
|
|
wxWidgets_USE_STATIC ON/OFF (OPTIONAL)
|
|
|
|
CMAKE_VERBOSE_MAKEFILE ON/OFF (OPTIONAL)
|
|
Turns ON/OFF verbose build messages.
|
|
You can also pass VERBOSE=1 to make for the same effect.
|
|
|
|
CMAKE_INSTALL_PREFIX (OPTIONAL)
|
|
|
|
USE_WX_GRAPHICS_CONTEXT ON/OFF (OPTIONAL)
|
|
*Experimental* advanced drawing library code using wxGraphicsContext (for tests only).
|
|
Under Windows, a very recent version of mingw is needed.
|
|
It requires wxWidgets to be built with the --enable-graphics_ctx switch.
|
|
See building wxWidgets above.
|
|
|
|
USE_IMAGES_IN_MENUS ON/OFF (OPTIONAL)
|
|
Force building Kicad with or without images in menu items. If this is not defined on
|
|
when CMake is used to create the build files, images will be included in menu items
|
|
on all platforms except OSX.
|
|
|
|
Note: that it is easy to build only a specific binary such as pcbnew alone:
|
|
make pcbnew
|