321 lines
12 KiB
Plaintext
321 lines
12 KiB
Plaintext
|
|
|
|
How to build kicad using CMAKE.
|
|
First Written: 19-Dec-2007
|
|
Last Revised: 27-Dec-2007
|
|
|
|
|
|
Kicad needs wxWidgets, the multi platform G.U.I.
|
|
|
|
Perform these steps in sequence. (Platform specific details are given in
|
|
sections below.)
|
|
|
|
|
|
1) If windows, then install "msys" and "mingw".
|
|
2) If linux, then install "mesa".
|
|
3) Make sure g++ and "make" are in your path.
|
|
4) Install wxWidgets [and build it if on windows].
|
|
5) Install CMAKE
|
|
6) Install the kicad source tree.
|
|
7) Use cmake to build the kicad makefiles.
|
|
8) Use make to build and install kicad.
|
|
9) Making a "Debug" build.
|
|
|
|
|
|
===== Step Details ====================================================
|
|
|
|
1) If windows, then install "msys" and "mingw".
|
|
Skip this step if on a Unix box. 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.
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
2) If linux, install "mesa". Use your package manager to install the development
|
|
libaries.
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
3) Make sure g++ and "make" are in your path.
|
|
If windows, then try running g++ and make from within your msys bash shell.
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
4) Install wxWidgets [and build it if on windows].
|
|
|
|
If on linux, use your package manager to install shared object libraries and 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.
|
|
|
|
If on windows, download
|
|
http://prdownloads.sourceforge.net/wxwindows/wxMSW-2.8.7.zip or a newer version.
|
|
Start msys so you have a bash shell. Decide where your wxWidgets build directory
|
|
will be. It must be where you can access it from within the msys environment,
|
|
such as home/<user>. Edit your msys/1.0/etc/fstab file if needed to provide
|
|
access to this build directory from msys. Unzip the wmMWS zip file into this
|
|
build directory. Change directories into there, and then
|
|
rm *.cache
|
|
./configure --enable-unicode=yes --enable-shared=no --enable-monolithic --with-msw --with-opengl
|
|
make
|
|
make install
|
|
I think the default is to install into /usr/local/wxMSW-2.8.7. You can probably
|
|
pass --prefix=<wxInstallDir> to configure above to change where "make install"
|
|
puts everything. We will refer to <wxInstallDir> again below. Without the
|
|
--prefix=<wxInstallDir> passed to configure, <wxInstallDir> will likely be
|
|
/usr/local/wxMSW-2.8.7
|
|
|
|
Also note that if you want you can build a "debug" version of the wxWidgets
|
|
library at this point, instead of the release version, or in addition to the
|
|
the release version.
|
|
|
|
Verify that wx-config is in your path. Modify your PATH environment variable
|
|
if need be so you can run wx-config from a command prompt. You may have to
|
|
restart your msys shell, depending on how you modify your PATH.
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
5) 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.4.7
|
|
or later. If only an older one is available in your package repository, build
|
|
2.4.7 from source. Verify that cmake is in your path by trying to run it from a
|
|
command prompt.
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
6) Install the kicad source tree.
|
|
You can use the subversion repository or a tar file for this. See the wiki.
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
7) Use cmake to create the kicad makefiles.
|
|
If windows, go into your msys shell. Linux and windows users both then make
|
|
two "out of source" build directories:
|
|
cd <kicadSource>
|
|
mkdir release
|
|
mkdir debug
|
|
cd release
|
|
|
|
On either cmake command line shown below, you can optionally include
|
|
-DCMAKE_INSTALL_PREFIX=<finallInstallDir>
|
|
before the final .. argument.
|
|
|
|
If windows, run the following command:
|
|
cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -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.
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
8) Use make to build and install kicad.
|
|
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>/release
|
|
make
|
|
[sudo] make install
|
|
|
|
You are now done unless you want to make a Debug build.
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
9) Making a "Debug" build.
|
|
|
|
cd <kicadSource>/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 -DwxWidgets_ROOT_DIR=<wxInstallDir> ..
|
|
|
|
If linux, run instead the following command:
|
|
cmake -DCMAKE_BUILD_TYPE=Debug ../
|
|
|
|
Edit CMakeCache.txt, and look for the line that defines wxWidgets_CONFIG_EXECUTABLE:
|
|
wxWidgets_CONFIG_EXECUTABLE:FILEPATH=E:/usr/local/bin/wx-config
|
|
If you have debug libaries for wxWidgets, which should be the case if you installed
|
|
them in linux or if you built them on windows, then add "--debug" to the end of
|
|
the wx-config command, for example:
|
|
|
|
wxWidgets_CONFIG_EXECUTABLE:FILEPATH=E:/usr/local/bin/wx-config --debug
|
|
|
|
Re-run the same cmake command again as given above for your respective platform.
|
|
|
|
Make the Debug binaries:
|
|
make
|
|
|
|
Note that it is easy to build only a specific binary such as pcbnew alone:
|
|
make pcbnew
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
End of CMAKE related building.
|
|
|
|
|
|
============= OLD STUFF NOT PERTINENT TO CMAKE ==============================
|
|
|
|
unzip sources in a working directory.
|
|
This will create the directory "kicad-dev".
|
|
|
|
First you must install wxWidgets (see www.wxWidgets.org)
|
|
See below for suggested configure command.
|
|
|
|
Linux compilation:
|
|
You must have:
|
|
wxWidgets ( I suggest you install wxWidgets in /usr/local).
|
|
(see below for suggested configure command, then make and make install)
|
|
|
|
Mesa: pcbnew and cvpcv need openGL or mesa.
|
|
(you must install mesa devel if libGL et libGLU are not found).
|
|
GTK 2 (install development libraries).
|
|
|
|
Because old version of Mesa has problem under a recent linux distrib (mandarke 10.1),
|
|
I am using Mesa version 6.2.1, statically compiled, installed in /usr/local
|
|
Mesa installation:
|
|
Get MesaLib-6.2.1.tar.gz from http://www.mesa3d.org/
|
|
in /usr/local : tar zxvf MesaLib-6.2.1.tar.gz
|
|
in /usr/local/Mesa-6.2.1 :
|
|
make linux-x86-static
|
|
make install ( libGL.a et libGLU.a are copied in /usr/local/lib, and header in /usr/local/include)
|
|
|
|
kicad compilation:
|
|
in kicad-dev:
|
|
Have a look to libs.linux (you can/must edit this file if you have problems)
|
|
Currently libs.linux uses wxWidgets 2.8.6 build (see below for suggested configure command)
|
|
lines to edit:
|
|
STD_INSTALL = 1
|
|
which can be (see comments in libs.linux)
|
|
STD_INSTALL = 0 (or 2)
|
|
|
|
after libs.linux edition:
|
|
run make -f makefile.gtk
|
|
|
|
Windows compilation:
|
|
|
|
kicad is build with mingw and msys.
|
|
Currently libs.win uses wxWidgets 2.8.6 (see below for suggested configure command)
|
|
|
|
install mingw and msys ( see mingw.org )
|
|
(opengl libs are included in mingw or windows)
|
|
|
|
Under msys:
|
|
(Warning: make.exe utility is sometime renamed mingw32-make.exe in install process
|
|
of msys.)
|
|
|
|
Build wxWidgets (currently version 2.8.6)
|
|
See below for suggested configure command, then make
|
|
|
|
In include/wx/msw/setup.h, check (and edit if needed) the defines :
|
|
#define wxUSE_GLCANVAS 1
|
|
#define wxUSE_MOUSEWHEEL 1 // Include mouse wheel support
|
|
#define wxUSE_HOTKEY 0 // Hotkey support (currently Windows only)
|
|
|
|
|
|
Exit msys.
|
|
Set environment variable WXWIN ( something as wxwin=/d/wxWidgets-2.8.6
|
|
for a wxWidget installed in d:\wxWidgets-2.8.6)
|
|
|
|
Have a look to libs.win (Currently this file handle wxWidgets 2.8.6)
|
|
|
|
Under msys:
|
|
in kicad-dev:
|
|
run make -f makefile.g95
|
|
|
|
*************************************************************************************
|
|
Building wxWidgets:
|
|
*************************************************************************************
|
|
linux:
|
|
rm *.cache
|
|
./configure --enable-monolithic --enable-unicode=no --enable-shared=no --with-opengl --with-libpng=builtin --with-libjpeg=builtin --with-libtiff=builtin --with-zlib=builtin --with-regex=builtin
|
|
|
|
linux-unicode:
|
|
rm *.cache
|
|
./configure --enable-monolithic --enable-unicode=yes --enable-shared=no --with-opengl --with-libpng=builtin --with-libjpeg=builtin --with-libtiff=builtin --with-zlib=builtin --with-regex=builtin
|
|
|
|
osX:
|
|
rm *.cache
|
|
./configure --enable-unicode=yes --enable-shared=no --enable-monolithic --with-opengl --disable-universal --disable-compat24
|
|
|
|
osX-unicode:
|
|
rm *.cache
|
|
./configure --enable-unicode=yes --enable-shared=no --enable-monolithic --with-opengl --enable-universal_binary
|
|
|
|
windows:
|
|
rm *.cache
|
|
./configure --enable-unicode=no --enable-shared=no --enable-monolithic --with-msw --with-opengl --with-odbc
|
|
|
|
windows-unicode:
|
|
rm *.cache
|
|
./configure --enable-unicode=yes --enable-shared=no --enable-monolithic --with-msw --with-opengl
|
|
|
|
*************************************************************************************
|
|
Patch wxWidgets
|
|
*************************************************************************************
|
|
*************************************************************************************
|
|
wxGTK version:
|
|
*************************************************************************************
|
|
Patch for printing wide traces that were showing missing rounded end caps:
|
|
wxGTK-2.8.6/src/generic/dcpsg.cpp
|
|
line 1634
|
|
PsPrint( "%%EndProlog\n" );
|
|
|
|
must be
|
|
PsPrint( "%%EndProlog\n" );
|
|
PsPrint("%%BeginSetup\n");
|
|
PsPrint( "1 setlinecap\n" );
|
|
PsPrint("%%EndSetup\n");
|
|
|
|
|
|
patch for Arcs drawings (NOT NEEDED for wxWidgets 2.7.1, needed for versions prior to 2.7.1)
|
|
wxGTK-2.x.y/src/gtk/dcclient.cpp
|
|
in function WindowDC::DoDrawArc
|
|
line 572 for wxWidgets 2.7.0-1:
|
|
if (m_pen.GetStyle() != wxTRANSPARENT)
|
|
{
|
|
gdk_draw_arc( m_window, m_penGC, FALSE, xxc-r, yyc-r, 2*r,2*r, alpha1, alpha2 );
|
|
|
|
gdk_draw_line( m_window, m_penGC, xx1, yy1, xxc, yyc );
|
|
gdk_draw_line( m_window, m_penGC, xxc, yyc, xx2, yy2 );
|
|
}
|
|
must be
|
|
if (m_pen.GetStyle() != wxTRANSPARENT)
|
|
{
|
|
gdk_draw_arc( m_window, m_penGC, FALSE, xxc-r, yyc-r, 2*r,2*r, alpha1, alpha2 );
|
|
|
|
if (m_brush.GetStyle() != wxTRANSPARENT)
|
|
{
|
|
gdk_draw_line( m_window, m_penGC, xx1, yy1, xxc, yyc );
|
|
gdk_draw_line( m_window, m_penGC, xxc, yyc, xx2, yy2 );
|
|
}
|
|
}
|
|
|
|
|
|
*************************************************************************************
|
|
wxMSW version: for wxWMSW 2.8.1 only
|
|
*************************************************************************************
|
|
|
|
wxMSW.2.8.1/src/msw/menu.cpp
|
|
line 410
|
|
if ( !pItem->IsOwnerDrawn() )
|
|
must be
|
|
if ( !pItem->IsOwnerDrawn() && !pItem->IsSeparator() )
|
|
|