このブログはLazarus(FreePascal)アドベントカレンダー2日目の記事です。
Lazarusでプロジェクトを作成する場合、まず気になるのがGitで管理できるかということです。
Delphiも昔は「他人が作ったコンポーネントの情報とかを自プロジェクトに含めなくて済むのでソースコードが公開しやすい!」みたいなことを思っていましたが、考えてみればPythonのpipenvみたいなものがないので他者がソースコードを持ってきてビルドする なんていうことがやりづらかった。
Lazarusのほうでもその問題は解決されてない(?)ようですが、とりあえず第三者の作ったコンポーネントやクラスライブラリを使っていない場合はGit管理ができます。
要らないファイルはどれか?
さて、Git管理する場合、まず気になるのが管理対象からはずすべきファイルの存在。とりあえずGithubの新規プロジェクト生成時に使用できるPascalの.gitignoreテンプレートを使ったため抜けはあるかもしれませんが、以下のファイルを無視すると、とりあえずLazarusプロジェクトをGit管理できます。
- 成果物・中間ファイルなど
- *.exe
- *.dll
- *.o
- lib/
- リソースファイルなど
- *.res:一見リソースファイルなので管理必要なのですが、リソースをまとめて実行ファイルに込める直前の中間ファイル的な存在のようなので、管理不要です
- *.lrs:Lazarusリソースファイル。これが管理不要かどうかはシチュエーションに寄ります(うちはresourcemaker.pyで自動生成するようにしてしまったので管理不要になりました)
- 設定ファイル
- *.lps:Lazarusプロジェクトの設定ファイル(どのファイルをエディタで開いているか、どの行を選択しているかなど)
- *.fpcunit.ini:Lazarusテストプロジェクトの設定ファイル
- その他
- backup/
というわけで、これらを無視ファイル設定すればいけそうです。
お勧めのディレクトリ構成
お勧めのディレクトリ構成は・・・といっても、Lazarusのプロジェクトエクスプローラは機能がそれほど多くなく、Lazarus自体同一プロジェクト内のファイルはuses句に名前を追記してあげればそれだけで呼べるようになるため
- 役割ごとに別々のフォルダを作ってソースファイルを置く
- それらをまとめてLazarusのプロジェクトエクスプローラに追加する
くらいで良さそうです。あとは今後書く予定のテストについては「テストプロジェクト」という扱いになるので、テストプロジェクトを作成する予定であれば以下のような感じがよさそう
プロジェクトルート |--src | `--実際に作るプログラムのソースコード `--tests `--テストプロジェクトのソースコード
プロジェクトグループ
前述テストプロジェクトなんかもありますが、近いプロジェクトを別管理するのも面倒です。
そんなときのために、Lazarusには「プロジェクトグループ」という機能があります(たぶんVisual Studioなどでいうソリューション相当)。
あ、メニュー項目名は日本語化してる前提です。
- 公式Wikiの内容を参考にProject Groupsの機能を有効にする。
- メインメニュー>パッケージ>パッケージをインストールもしくはアンインストール
- 右側の「インストール可能パッケージ」の一覧より「lazprojectgroups」を選択して「選択対象をインストール」をクリック
- 「保存してIDEを再構築」をクリック
- 確認ダイアログが出るのでそのままOK
しばらくIDEが再構築されたあと自動的に再起動されるので、プロジェクトメニューより「New Project group...」をクリックして使います。
やってることはプロジェクト名をクリックするとプロジェクトを開き直すだけなんですが、意外と使いやすいので有効にしておくと良いです。
肝心のGit管理機能は・・・
さて、肝心のLazarusのGit管理機能は・・・というと、残念ながらLazarusはGitに対応しておりません。
個人的には外部ツールにVisual Studio Codeを追加してそれを使ってます(Github Desktopなどでもいいでしょうが細かい編集などがしづらいので)。外部ツールの設定でVisual Studio Codeなどを指定しておくと良さそう(プロジェクトグループを作成しているとこの書き方じゃダメかも)。
- タイトル:Visual Studio Code
- パス:C:\Program Files\Microsoft VS Code\Code.exe
- オプション:$ProjPath()
というわけでLazarusでもソースコードをGit管理していきましょう。