Jojomはjom.exeの代替プログラムです。Windows上でQtとQtCreatorとVisual C++でプログラミングする際に、文字コーディングに関するプリプロセッシングを行います。
このプログラムは、実験的に作ってみたもので、十分な動作検証は行われていません。使用に際して、使用者の責任が伴います。
jom.exeはマイクロソフトのnmakeの代わりで、並列処理が可能な、高速メイクユーティリティです。Jojomは、そのjom.exeの代わりのプログラムです。
マイクロソフトVisual C++でコンパイルするソースコードは、一般的にシフトJISエンコーディングで記述します。しかしシフトJISで書かれたソースコードはGNUコンパイラ(gcc)でコンパイルすることはできません。gccで日本語プログラムをコンパイルするには、シフトJISではなく、UTF-8エンコーディングで記述する必要があります。UTF-8にはBOM(バイトオーダーマーク)の有無によって、BOM無しUTF-8とBOM有りUTF-8の二種類があります。広く使われているのは前者のBOM無しUTF-8の方です。しかし困ったことに、Visual C++コンパイラはシフトJISのほか、BOM有りUTF-8しかコンパイルすることができません。BOM有りUTF-8はあまり一般的ではなく、しかもQtCreator上で使用すると、若干不都合があります。
JojomはQtCreatorから呼び出されます。標準のjom.exeの代わりにJojomを使用すると、BOM無しUTF-8で書かれたソースコードの一時ファイルを作成し、BOM有りUTF-8に変換します。コンパイルが終了すると一時ファイルは削除されます。BOM付加処理はユーザーから透過的に処理され、BOM無しUTF-8のままVisual C++でコンパイルすることができます。
QtCreatorのプロジェクトのビルドステップ設定で、「jom.exe の代わりに使用するコマンド」の欄にJojomを設定します。
エディタの設定で、ファイルの文字コードをUTF-8とし、BOMを常に削除するようにします。
設定は以上です。
既存のソースファイルは全てBOM無しUTF-8で保存し、ビルドを行います。
Jojomを使ってコンパイルされたプログラムは、デバッグの際にちょっと大きな制限事項があります。
ソースファイルは一時的に作成され、コンパイル後に削除されるため、編集するソースファイルと、コンパイルに使用されるソースファイルが異なります。そのため、ビルド後のプログラムをQtCreator上でデバッグする際に、ソースファイルを参照することができません。