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 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= If windows, run the following command: cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DKICAD_TESTING_VERSION=ON -DwxWidgets_ROOT_DIR= ../../ 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 /build/release make [sudo] make install You are now done unless you want to make a Debug build. Compiling a Debug version ------------------------- cd /build/debug On either cmake command line shown below, you can optionally include -DCMAKE_INSTALL_PREFIX= 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= ../../ where is /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