Growl 2.0を自力ビルドした時のメモ
growlはMac OS X Lionから有料アプリになったけど、
ソースコードは公開されているので、自力でビルドすればOKと
Google先生が教えてくれた。
ビルドした環境
・mac 10.8.2
・growl-2.0.1
・Xcode 4.6.1
参考ブログ
大体のことは、この記事を参考にしたら出来た。ありがたき幸せ。
[Growlを自力でビルドする]
http://blueberrystream-technical.hatenablog.com/entry/2012/10/08/190410
growl-2.0.1では、「Growl.app 2.0で手直ししないといけないところ」の修正は
すでに反映済みで不要だった。
ビルドエラーの対応
なんかXcode4.6だと、ビルドエラーが出るっぽい。
エラーその1:GrowlDisplayWindowController.m
NSInteger startPercentage = (NSInteger) NSMapGet(startTimes, transition); NSInteger endPercentage = (NSInteger) NSMapGet(endTimes, transition);
Error:Cast from function call of type 'void *' to non-matching type 'NSInteger' (aka 'long')
NSInteger型(別名long型)にvoid*型はキャストできないよ、と言っている。
なので型キャストを外した。
NSInteger startPercentage = NSMapGet(startTimes, transition); NSInteger endPercentage = NSMapGet(endTimes, transition);
エラーその2:GrowlSMSDisplay.m
CFStringRef contentLength = CFStringCreateWithFormat(kCFAllocatorDefault, NULL, CFSTR("%l"), CFDataGetLength(postData));
Error:Format specifies type 'unsigned int' but the argument has type 'CFIndex' (aka 'long')
フォーマットのタイプがunsigned intだけど、引数はCFIndex型(別名long型)になってるよ、と言っている。
なのでフォーマットタイプを変更した。
CFStringRef contentLength = CFStringCreateWithFormat(kCFAllocatorDefault, NULL, CFSTR("%lu"), CFDataGetLength(postData));
無事コンパイル成功!
他にもコードサイニング証明書でエラー出てたけど、いつの間にか出なくなってた。
#avast!消した後からだったような・・・
おまけ
ついでに、ビルドしたアプリが
/Users/xxxx/Library/Developer/Xcode/DerivedData/Growl-/Build/Products
にあるんだけど、Finder開いてもLibraryってフォルダないじゃん!ってなったけど
デフォルトで非表示になってるだけだった。
常に表示しておくには、ターミナルでコマンドを叩く。
chflags nohidden ~/Library/
170円くらい払ってしまおうかと思ったけど、頑張ってよかった。
BUILD SUCCEEDEDを見た時の感動はプライスレス。