fc2ブログ

KiCad for OSXのビルド

研究では回路を作ることも多い。とか言いながら、最近はあまり作っていないが。
ともあれ、ちょっとした回路を作る時にプリント基板作成ツールは必須である。

これまではEagleを使っていたのだけど、諸般の事情によりKiCadに乗り換えようかと考えている。KiCadはGPL2準拠のオープンソースEDA。良く出来ているのだが、バイナリの配布が少ない。しかも、Macでまともに動くバイナリはあまり見かけない。

なのでビルドすることにした。

手順はほぼBuilding KiCad from source on Mac OS X - Thomas notesにしたがった。

Xcodeとかcommand line toolsとかbrewはすでに入ってるよね・・・。
当方の環境は、Core i7 quad coreのMacmini、OSX 10.8.5、clangのバージョンは
$ clang --version
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin12.5.0
Thread model: posix

まずは必要なライブラリとツールをインストールする。

$ brew install cmak bzr glew cairo

ビルドする場所を作って、ソースを取得。

$ mkdir -p ~/build/kicad-build
$ cd !$
$ bzr whoami "pman <[email protected]>"
$ bzr branch lp:kicad

wxWidgetsのソースをhttp://sourceforge.net/projects/wxwindows/ から取得しておく。執筆時点で最新安定版の3.0.2を取得した。~/Downloadsに入っているとして、

$ tar jxvf ~/Downloads/wxWidgets-3.0.2.tar.bz2

なお、zipを取得したならunzipを使うべし。

10.10な人は先のサイトに注意書きがあるのでこれに従う。
すなわち、wxWidgets-3.0.2/src/osx/webview_webkit.mmの31行目を

#include <WebKit/WebKitLegacy.h>

とする。らしい。

で、

$ sh kicad/scripts/osx_build_wx.sh wxWidgets-3.0.2 wx-bin kicad "-j8"

などとしてビルドする。結構時間かかった気がするけど忘れた。

wx-binというディレクトリができるはず。


お次はkicad本体をビルドするのだが、試行錯誤しているときにリンカオプションでエラーが出たりしたのでそれを排除する。

変更は以下のような感じ。

$ cd ~/build/kicad-build/kicad
$ bzr diff
=== modified file 'cvpcb/CMakeLists.txt'
--- cvpcb/CMakeLists.txt	2014-10-28 15:15:39 +0000
+++ cvpcb/CMakeLists.txt	2014-11-15 04:32:00 +0000
@@ -5,6 +5,7 @@
 else()
     set( MAKE_LINK_MAPS true )
 endif()
+set( MAKE_LINK_MAPS false )
 
 add_definitions( -DCVPCB )
 

=== modified file 'eeschema/CMakeLists.txt'
--- eeschema/CMakeLists.txt	2014-10-26 19:54:48 +0000
+++ eeschema/CMakeLists.txt	2014-11-15 04:31:52 +0000
@@ -5,6 +5,7 @@
 else()
     set( MAKE_LINK_MAPS true )
 endif()
+set( MAKE_LINK_MAPS false )
 
 add_definitions( -DEESCHEMA )
 

=== modified file 'gerbview/CMakeLists.txt'
--- gerbview/CMakeLists.txt	2014-10-26 19:54:48 +0000
+++ gerbview/CMakeLists.txt	2014-11-15 04:32:09 +0000
@@ -5,6 +5,7 @@
 else()
     set( MAKE_LINK_MAPS true )
 endif()
+set( MAKE_LINK_MAPS false )
 
 add_definitions(-DGERBVIEW)
 

=== modified file 'pagelayout_editor/CMakeLists.txt'
--- pagelayout_editor/CMakeLists.txt	2014-10-26 19:54:48 +0000
+++ pagelayout_editor/CMakeLists.txt	2014-11-15 04:32:21 +0000
@@ -5,6 +5,7 @@
 else()
     set( MAKE_LINK_MAPS true )
 endif()
+set( MAKE_LINK_MAPS false )
 
 add_definitions(-DPL_EDITOR)
 

=== modified file 'pcbnew/CMakeLists.txt'
--- pcbnew/CMakeLists.txt	2014-10-26 19:54:48 +0000
+++ pcbnew/CMakeLists.txt	2014-11-15 04:32:52 +0000
@@ -5,6 +5,7 @@
 else()
     set( MAKE_LINK_MAPS true )
 endif()
+set( MAKE_LINK_MAPS false )
 
 add_definitions( -DPCBNEW )
 add_subdirectory(router)

=== modified file 'tools/CMakeLists.txt'
--- tools/CMakeLists.txt	2014-07-07 19:49:14 +0000
+++ tools/CMakeLists.txt	2014-11-15 04:33:13 +0000
@@ -1,5 +1,5 @@
 
-set( MAKE_LINK_MAPS true )
+set( MAKE_LINK_MAPS false )
 
 if( 0 )


要するに、各ツールでMAKE_LINK_MAPSをfalseにしている。これは、brewのgcc-4.8でビルドしようとしたときに-crefとかいうのが無いと言われたから。clangでビルドするときには必要ない作業かもしれない。

気を取り直してcmakeしてMakefileを作成。

$ cd ~/build/kicad-build
$ mkdir build
$ cd !$
$ cmake ../kicad -DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DwxWidgets_CONFIG_EXECUTABLE=../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 -j8

エラーが出たりした場合はVERBOSE=1を付けてmakeを実行し、実行コマンドを確認してみるべし。
エラーなく終了すると、kicad/kicad.appなどができている。

$ make install

これで、~/build/kicad-build/bin/kicad.appなどができている。この時点でツール類が起動できなければビルドに失敗しているので、エラーメッセージを頼りに頑張って修正しよう。

最後に、binをKicadなどとリネームして/Applicationsに配置すれば良い。


KiCadのライブラリが無いと回路を作るときに残念なことになるので、これも取得する。

$ cd ~/build/kicad-build
$ git clone https://github.com/KiCad/kicad-library.git
$ cd kicad-library
$ cmake -DCMAKE_INSTALL_PREFIX=/
$ make
$ sudo make install

これで/Library/Application Support/kicadにライブラリがインストールされる。



と、長くなったが、今回作成したKicad.appを公開しておく。ライブラリのインストールも含めたpkg形式にした。これを学生にも配る算段。
10.8と10.9で動作を確認したが、無保証なので自己責任でご使用下さいな。
http://www.f.ait.kyushu-u.ac.jp/~ishida/up/kicad/Kicad_20141112_bzr5266.pkg



実は、参考にしたサイトではバイナリも公開されている。
が、試してみたところ10.8ではうまく動かなかった。標準ではない外部ライブラリを参照したり、10.8にはないライブラリ関数を使っているのが原因らしい。

管理者にだけ表示を許可する