
既に何個か記事を書いているが、実は自分で使っているMacBook上ではビルドが出来ない状態が続いていた。
が、いろいろ調べて、ついにビルドする事が出来るようになった。
これで最新のtrunk版を追っかけていける。
手順は以下の通り。ビルドにはXCodeが必要。
1. ソースコードをレポジトリからチェックアウトしてくる
ターミナルを使って、~/で以下を実行。
2. ビルドするのにシンボリックリンクを張っておく
ビルドするのに必要だとINSTRATION.txtに書いてある。
3. 関連ライブラリをビルドする
dbやらsubversionやらをビルドする。
だが、これの途中のdb-4.2.52のconfigure時に失敗する。
との事で、config.logを見ると、
と言われている。
原因は、makeファイル内でインクルードしているuniversal.setupファイル内で、
となっており、これによりisysrootがgccに2回設定されてしまうため。
よって、LDLAGSの方を削り、
とする事で、無事ビルドが出来るようになった。
4. XCodeでSCPlugin本体をビルドする
scpluginのソースディレクトリのトップにある、SCPlugin.xcodeprojを開き、ターゲットを"All"に設定しビルドする。
が、やはりここでも失敗する。
SCPluginCmdというターゲットのビルド時に1万近いコンパイルエラーになってしまう。
これは、SCPluginCmdはCarbonアプリケーションであるのに、なぜかCocoaフレームワークのヘッダファイルがインクルードされてしまい、Objective-Cの文法がC++コンパイラにてエラーとなるためだった。
なぜCocoaフレームワークのヘッダファイルが?と調べてみると、どうやら原因はプレフィックスヘッダファイルとして勝手にCocoa用のファイルが用いられてしまう事が原因だった。
Apple曰く
無指定だとCocoa.hがインクルードされてしまうのか?
プロジェクト内のソースコードを調べてみると、プリフィックスヘッダとして
SCPluginUIDaemon/SCPluginUIDaemon_Prefix.hが用意されていた。
だが、プロジェクトの設定ではそれを用いるように設定されていないので、SCPluginCmdのビルドの設定で以下を変更
この設定の変更によりXCodeでのビルドも無事出来た。
5. インストール
まず、すでにSCPluginをインストールしている場合は、アクティビティモニタを使ってSCPluginUIDaemonを終了させる。
そして、ビルドできたSCPlugin.pluginファイルを、~/Library/Contextual Menu Items
へコピーし、Finder(あるいはMacごと)再起動すれば最新のSCPluginが使えるようになります。
新バージョンは、以前動かなかったInfoなどのコマンドも正常に動作するようになっていていい感じ。
1. ソースコードをレポジトリからチェックアウトしてくる
ターミナルを使って、~/で以下を実行。
$ svn checkout http://scplugin.tigris.org/svn/scplugin/tr
unk scplugin --username guest
2. ビルドするのにシンボリックリンクを張っておく
ビルドするのに必要だとINSTRATION.txtに書いてある。
$ sudo ln -s /usr/bin/grep /opt/local/bin
$ sudo ln -s /Users /Developer/SDKs/MacOSX10.4u.sdk/Users
3. 関連ライブラリをビルドする
dbやらsubversionやらをビルドする。
$ cd svn-mac-build
$ make build-1.4
だが、これの途中のdb-4.2.52のconfigure時に失敗する。
checking for C compiler default output file name... configure: error: C compiler cannot create executables
See `config.log' for more details.
との事で、config.logを見ると、
/usr/bin/ld: -syslibroot: multiply specified
と言われている。
原因は、makeファイル内でインクルードしているuniversal.setupファイル内で、
ROOT=/Developer/SDKs/MacOSX10.4u.sdk
export CFLAGS="-isysroot $ROOT -arch i386 -arch ppc"
export LDFLAGS="-isysroot $ROOT -arch i386 -arch ppc"
となっており、これによりisysrootがgccに2回設定されてしまうため。
よって、LDLAGSの方を削り、
export LDFLAGS="-arch i386 -arch ppc"
とする事で、無事ビルドが出来るようになった。
4. XCodeでSCPlugin本体をビルドする
scpluginのソースディレクトリのトップにある、SCPlugin.xcodeprojを開き、ターゲットを"All"に設定しビルドする。
が、やはりここでも失敗する。
SCPluginCmdというターゲットのビルド時に1万近いコンパイルエラーになってしまう。
これは、SCPluginCmdはCarbonアプリケーションであるのに、なぜかCocoaフレームワークのヘッダファイルがインクルードされてしまい、Objective-Cの文法がC++コンパイラにてエラーとなるためだった。
なぜCocoaフレームワークのヘッダファイルが?と調べてみると、どうやら原因はプレフィックスヘッダファイルとして勝手にCocoa用のファイルが用いられてしまう事が原因だった。
Apple曰く
コンパイラでは、ターゲットの各ソースファイルをコンパイルする前にプレフィックスヘッダファイルをインクルードするので、プレフィックスヘッダの内容と、ターゲットで使用されるC言語の表現形式に互換性がなければなりません。たとえば、ターゲットでCocoaを使用していて、Objective-CとCの両方のソースファイルが含まれる場合、次の例に示すように、両方の言語の表現形式と互換性を持つようにするために、プレフィックスヘッダファイルには、適切なガードマクロを含めなければなりません:
#ifdef __OBJC__
#import
#endif
#define MY_CUSTOM_MACRO 1
#include "MyCommonHeaderContainingPlainC.h"
無指定だとCocoa.hがインクルードされてしまうのか?
プロジェクト内のソースコードを調べてみると、プリフィックスヘッダとして
SCPluginUIDaemon/SCPluginUIDaemon_Prefix.hが用意されていた。
だが、プロジェクトの設定ではそれを用いるように設定されていないので、SCPluginCmdのビルドの設定で以下を変更
プレフィックスヘッダ : SCPluginUIDaemon/SCPluginUIDaemon_Prefix.h
プレフィックスヘッダをプリコンパイルする: Yes
この設定の変更によりXCodeでのビルドも無事出来た。
5. インストール
まず、すでにSCPluginをインストールしている場合は、アクティビティモニタを使ってSCPluginUIDaemonを終了させる。
そして、ビルドできたSCPlugin.pluginファイルを、~/Library/Contextual Menu Items
へコピーし、Finder(あるいはMacごと)再起動すれば最新のSCPluginが使えるようになります。
新バージョンは、以前動かなかったInfoなどのコマンドも正常に動作するようになっていていい感じ。
http://www.digitaldivide.ne...
http://www.digitaldivide.ne...
http://courses.polhncourses...
http://glossary.reuters.com...
http://forums.nvidia.com/in...
http://groups.adobe.com/peo...
http://groups.adobe.com/peo...
http://groups.adobe.com/peo...