ktmizugakiの日記: Linux で サクラエディタ をビルドする 4
ソースコードは以下から取得します。以降で出てくるパッチやパスは trunk2 が基準です。
svn://svn.code.sf.net/p/sakura-editor/code/sakura/trunk2
rev 4018で Wine で落ちる問題の修正がコミットされたので、それを使うのがいいと思います。
MinGW の gcc とか Wine が入っているのが前提です。
sakrua_core/ ディレクトリに MinGW用のMakefileがあるので、それを使えばいいのですが、
#include のファイル名の大文字小文字が、実際のファイル名と違うため、
「ファイルが見つかりません」というエラーが出まくります。
以下の方針でコンパイルできるようにします(しました)。
1. サクラエディタ内に存在するヘッダファイル名については、実際のファイル名に修正する。
2. MinGWのヘッダファイル名については、 ciopfs を使う。
1番については、修正したのをパッチにしたので、これを適用します。
2番の ciopfs が何かは、公式の方を参照してください。
ソースを直してもいいのですが、これを使います。
Windows 的には CamelCase の方が正しいファイル名だったような気がするというのと、
修正は少ない方が後々(マージとか)楽かなぁという理由です。
Debianだとパッケージはなさそうだったので、ソースからビルドしました。
ソースは公式の方からダウンロードしました。
多分以下のライブラリが必要でした(履歴からとってきたので適当)。
apt-get install libfuse-dev libglib2.0-dev libattr1-dev
ビルドしたら、PATHの通っているところに置いておきます。
ciopfs をインストールしたら、Makefile にこのパッチを適用します。
MinGW のヘッダーファイルディレクトリをビルド時に自動でマウントするようにします。
PREFIX=i686-w64-mingw32- で固定する変更が混じってるので、
違うPREFIXを使う場合は適宜修正してください。
MinGW のヘッダーファイルディレクトリが違っている場合も適宜修正してください。
多分これでビルドできると思うので、sakura_core/ ディレクトリで make します。
sakura_core/sakura.exe が出来れば成功です。
その他作ってみたパッチ:
・「行頭に移動」で、移動順を逆にする。
・「タグジャンプ」で、カーソルの下や、選択されているファイル名を優先して開く。
・スマートインデントで、'(' と '{' を交互に入力したときにインデントしないようにする。
・タブ幅とは異なるインデントサイズを設定可能にする。(あんまりちゃんと動作確認してない)
・「同名のC/C++ヘッダ(ソース)を開く」を .rc と .m に対応させた。
2015年4月16日 20:05 追記
winemaker を試してみました。
sakura_core ディレクトリで、以下を実行すればよいようです。
/path/to/winemaker --nobackup --lower-include .
※ --nobackup を付けないと、.bak ファイルが沢山できて邪魔になります。
※ debug ディレクトリはスキップする仕様の様です。
・使っていないらしく、ビルドに支障はありませんでした。
※ Makefile が置き換えられるので、そのまま make してもビルド出来ません。
・makefile.win という名前に変更されているので、
make -f makefile.win するか、mv makefile.win Makefile して make します。
・--nogenerated-files オプション付けても名前は変更されました。
※ svn diff の出力は、やはり大幅に増えます。
2015年4月16日 21:40 追記
作ってみたパッチの「タグジャンプ」のパッチに不具合があったので修正しました。
作ってみたパッチに、インデントサイズの追加 と 「同名のC/C++ヘッダ(ソース)を開く」機能の拡張 を追加。
WIneには変換用のものがあります (スコア:1)
Re:WIneには変換用のものがあります (スコア:1)
公式のどこを見ればよいのでしょうか。よければ教えてください。
svn-init() {
svnadmin create .svnrepo
svn checkout file://$PWD/.svnrepo .
}
Re:WIneには変換用のものがあります (スコア:1)
Re:WIneには変換用のものがあります (スコア:1)
ありがとうございます。後で確認します。
svn-init() {
svnadmin create .svnrepo
svn checkout file://$PWD/.svnrepo .
}