1つのBuild Commandsメニュー、2つの無関係なツールチェーン
GeanyにはBuild → Set Build Commandsというメニューがただ1つしかなく、これまでに開いたすべてのファイルで共有されます。ツールチェーンが1つだけならそれで問題ありません。しかし同じマシン上に無関係なツールチェーンが2つ存在した瞬間に問題になります。STC89C52RCのページで使うSDCC/8051の設定と、CH32V003F4P6のページで使うGNU RISC-V GCCの設定は、どちらも同じメニューを我が物にしようとするため、プロジェクトを切り替えるたびに手作業で編集していては、いつの間にか設定が古いままになってしまいます。
解決策は手動での切り替えではなく、それぞれ独自のBuild Commands、ファイルタイプ、最近使ったファイルの一覧を持つ、完全に独立した2つのGeany設定を、2つの別々のショートカットから起動することです。Geanyはもともとこれをサポートするように作られています。
仕組み
Build Commands、最近使ったファイル、キーバインドなど、Geanyのインストールを「自分専用」にしているものはすべて、インストールされたプログラム本体ではなく、1つのフォルダの中に保存されています:
C:\Users\<you>\AppData\Roaming\geany\
geany.exe自体は完全に汎用的なプログラムであり、別のフォルダを指定するだけで、まったく別のインストールであるかのように振る舞います。Geany自身のコマンドラインインターフェースには、これを行うためのスイッチが明記されています:
-c dir_name、--config=dir_name — 別の設定用ディレクトリを使用する。Windowsでのデフォルトは%APPDATA%\geany\。
設定手順
- 開いているGeanyのウィンドウをすべて閉じる(終了時に設定をディスクへ書き戻すため)。
- ツールチェーンごとにフォルダ名を決める。例:
%APPDATA%配下にGeany-STC-SDCCとGeany-CH32V003。手動で作成する必要はなく、まだ存在しないパスに対してGeanyを初めて起動すると、設定用ディレクトリが自動的に作成・初期化されます。 - 設定ごとにデスクトップショートカットを1つずつ作成し、リンク先を次のようにする:
"C:\Program Files\Geany\bin\geany.exe" -c "C:\Users\<you>\AppData\Roaming\Geany-STC-SDCC"
"C:\Program Files\Geany\bin\geany.exe" -c "C:\Users\<you>\AppData\Roaming\Geany-CH32V003"
実行ファイルのパスと-c引数の両方を、必ず両端をダブルクォートで囲むこと。Program FilesもAppData\Roamingもパスにスペースを含むためです。各ショートカットには「Geany (STC/SDCC)」「Geany (CH32V003)」のようにわかりやすい名前を付け、うっかり間違った方を開いてしまわないよう、ショートカットごとにアイコンの色を変えておくと安上がりな安全策になります。
- 各ショートカットを一度ずつ起動し、それぞれ独立してBuild Commandsを設定する(Build → Set Build Commands)。一方にはSDCC用のコマンド、もう一方にはCH32V003用のバッチファイル(
cmd /c build_ch32v003.bat)を設定する。 - 確認:それぞれを開き、Build Commandsと最近使ったファイルが互いに完全に独立していることを確認する。独立していない場合、よくある原因は2つの
-cパスのどちらかにタイプミスがあり、両方が同じデフォルトの設定用ディレクトリに解決されてしまっていることです。
見た目上の小さな注意点
両方のショートカットが同一のgeany.exeを起動するため、ショートカット名が異なっていてもWindowsはタスクバー上でアイコンをまとめてグループ化することがあります。これは実行ファイル単位でグループ化される仕様であり、起動時の引数は関係ありません。あくまで見た目だけの問題で、両方のウィンドウは引き続き完全に独立して動作します。ひと目で区別できるよう、ショートカットのアイコンの色を変えておくのが最も簡単な対策です。
詳細な解説の入手
完全版ガイドでは、正確なフォルダ構成、両方のショートカットのリンク先の全文、STC89C52RCとCH32V003それぞれのプロファイルのBuild Commandsを並べた対比表、確認用チェックリスト、そしてこれを3つ目のツールチェーンに拡張する際の簡単な補足を扱っています。
関連ページ
- STC89C52RC with SDCC and Geany — この設定で分離している2つのプロファイルのうち1つ目。
- CH32V003F4P6 with WCH-LinkE, GNU RISC-V GCC and Geany — 2つ目。