編集履歴一覧に戻る
uchanのアイコン画像

uchan が 2022年01月02日22時21分15秒 に編集

初版

タイトルの変更

+

MPLAB X IDEのプロジェクトでバージョン管理に追加すべきファイル

タグの変更

+

MPLAB

+

Git

+

PIC

メイン画像の変更

メイン画像が設定されました

記事種類の変更

+

セットアップや使用方法

本文の変更

+

PIC マイコンの開発には MPLAB X IDE を使うことが多いと思います。MPLAB X IDE でプロジェクトを作るとデフォルトでいくつかのファイルが生成されますが、Git などのバージョン管理ツールで管理すべきファイルはどれでしょうか?本記事では、uchan が実験的に探った結果を共有します。Microchip 社の公式文書などを見たわけではありませんので、ご注意ください。(もし公式文書等をご存じの方は教えてください) ## プロジェクトに含まれるファイル MPLAB X IDE で「New Project」ダイアログを用いて「Standalone」プロジェクトを新規作成する場合(下図)を前提として説明します。 ![](https://camo.elchika.com/40b9f8083058b523d7b782703019c00850088896/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f63333936313234302d643365342d346361652d396632662d3965396366383634616562342f36616532643162652d313439612d343833632d623131642d656531373136386638346661/) プロジェクトを新規作成し、main.c だけを追加した場合、次のようなファイル構成になります。 ``` . ├── Makefile ├── debug │   └── default ├── main.c └── nbproject ├── Makefile-default.mk ├── Makefile-genesis.properties ├── Makefile-impl.mk ├── Makefile-local-default.mk ├── Makefile-variables.mk ├── Package-default.bash ├── configurations.xml ├── private │   └── configurations.xml └── project.xml ``` ## バージョン管理すべきファイル 筆者の考えでは、この中でバージョン管理下に置くべきファイルは次の通りです。 ``` . ├── Makefile ├── main.c └── nbproject ├── configurations.xml └── project.xml ``` MPLAB X IDE が生成したファイルのうち、debug ディレクトリ以下のすべてと、nbproject 以下の大半が不要です。なぜなら、それらのファイルはプロジェクトを MPLAB X IDE で開けば自動的に再生成されるからです。 それぞれのファイルの役割は次の通りです。 - Makefile: プログラムのビルドを行うのに必要なファイルです。 - main.c: プログラム本体です。もっとも重要なファイルですね。 - nbproject/configurations.xml: プロジェクトの設定が書かれたファイルです。例えばコンパイラの最適化オプションや PICkit にて対象回路に電源を供給するかどうか、というような設定はこのファイルの担当です。 - nbproject/project.xml: MPLAB X IDE のプロジェクトを表すファイルです。このファイルがなければ MPLAB X IDE のプロジェクトとして認識されません。 ## MCC を利用する場合 MCC(MPLAB Code Configurator)を利用すると PIC 内部の設定を GUI で行うことが可能です。ソースコードで 1 行 1 行設定を書くこのに比べ、設定ミスが少なくなり、高速な開発が可能になるので、筆者はこれを愛用しています。また、MCC は設定を自動化できるだけでなく、各機能を扱う薄いラッパーも提供してくれます。 筆者が作った [LED 抵抗計算機の MPLAB プロジェクト](https://github.com/uchan-nos/eleclab/tree/main/led_tester/led_tester.X) を例に説明します。このプロジェクトでバージョン管理下に置いているファイルは次の通りです。 ``` . ├── Makefile ├── led_tester.mc3 ├── main.c ├── mcc_generated_files │   ├── adc.c │   ├── adc.h │   ├── device_config.c │   ├── device_config.h │   ├── mcc.c │   ├── mcc.h │   ├── pin_manager.c │   └── pin_manager.h ├── nbproject │   ├── configurations.xml │   └── project.xml ├── sc1602.c └── sc1602.h ``` main.c、sc1602.c、sc1602.h は筆者が記述したソースコードですので、当然 Git に管理してもらいます。Makefile と nbproject は先ほど説明した通り、これらも Git で管理します。 目新しいのは led_tester.mc3 と mcc_generated_files でしょう。 led_tester.mc3 は MCC のための設定ファイルです。システムクロックの選択や各ピンの入出力設定など、MCC での設定がこのファイルに記録されます。 mcc_generated_files 以下は MCC が生成したファイル群です。ですので、led_tester.mc3 さえあればこれらのファイルはバージョン管理下に置かなくても良いという考え方もあります。しかし、次の理由により、筆者はバージョン管理した方が良いと考えます。 - MCC はどの MPLAB ユーザでも使っているとは限らない:MCC はプラグインですので、MPLAB X IDE を使っている人が全員導入しているとも限りません。mcc_generated_files 以下のファイルをバージョン管理に追加していない場合、プロジェクトをダウンロードした人自身で、MCC を導入してソースコード生成を行わなければなりません。 - 生成されたファイルに変更を加える場合がある:mcc_generated_files 以下のファイルは(main.c などと比べて)あまり編集しないと思いますが、ゼロとも言えません。もし、MCC が生成したファイルを手動で変更した場合は、バージョン管理に追加しておかなければなりません。 ## .gitignore の記述例 .gitignore は Git の管理下に置かないファイルを指定する設定ファイルです。上記の考え方に基づき、私のリポジトリでは次のような記載をしました。 ``` **/*.X/nbproject/Makefile-* **/*.X/nbproject/Package-default.bash **/*.X/nbproject/private ``` これを [リポジトリ最上位の .gitignore に記載すれば](https://github.com/uchan-nos/eleclab/blob/2af87a418fe70d85a003e2490847e83c92f6895b/.gitignore#L5-L7)、すべての MPLAB プロジェクトに対し、バージョン管理下に置くべきでないファイル群を一律に無視するようになります。