Raspberry Pi シリーズの クロス開発環境構築

RaspberryPi

環境

フロントエンド:Windows10 VisualStudio 2022
開発対象:もちろんRaspberry Pi

準備:Raspberry Pi

必要なパッケージをインストールしておく。
少なくともninja-build意外は必要。

sudo apt-get install openssh-server g++ gdb make ninja-build rsync zip

準備:Windows10マシン

VisualStudioをインストール。
インストール済みの場合はインストーラを立ち上げる。
スタートボタン横の検索ボックスに「Visual Studio Installer」と入力すればすぐに見つかる。

場合によってはインストーラの更新を求められるので、素直に更新。

インストーラが起動したら「変更」をクリック。
(キャプチャしたけど、2017はさすがに古いなぁ・・・そのうち入れ替えよう)
2017とRaspberryPi3はこの後に続く作業で認識されないシーンがあるため、2022がおすすめ。
VisuaoStudioは複数バージョンの混在が出来、今、2017が入っていても2022を併用することが出来るので、最新版にしておいた方が幸せ。

「ワークロード」タブが開かれてくるので、下にスクロールして「C++によるLinux開発」を探し、「変更」ボタンを押してしばらく待つ。
(自環境、特に意識してなかったけど、既に設定済みだった・・・w)

プロジェクトを作成

C++コンソールアプリケーションを選択してプロジェクトを作っていく。

そして、保存先がけっこう重要だったりする。

最近は個人でもNASを導入しているところもあるだろうし、企業なんかは当たり前のように入っていたりする。
この時、NASへのアクセスを「\\192.168.1.1」みたいにしていると、後で動かなくなる。
(ネットワークパスを上手く処理してくれなくてビルドに失敗する)
なので、ネットワークドライブとしてドライブ番号を割り当ててあげるか、ローカルストレージに保存するようにしよう。

VisualStudioの設定

プロジェクトが作成できたところで、ラズパイの電源が入ってなければ入れておこう。
で、SSHで接続出来ることを確認しておく。

SSHで接続出来たら、VisualStudioでの設定を。

ツール>オプション を開いて、
クロスプラットフォーム>接続マネージャー>追加ボタンをクリック
すると「リモートシステムへの接続」と出てくるので「ホスト名」「ユーザー名」「パスワード」を入力する。(ポート番号見るとsshで接続してるみたいなんだよね)
尚、ホスト名はIPアドレスでもOK。(VisualStudio2017はIPアドレスではダメ)

「接続」をクリックすると接続テスト後、接続マネージャーのリストにラズパイが追加される。

次に、左ペインのリストの「接続マネージャー」には「リモートヘッダーIntelliSenseマネージャー」という項目がぶら下がっているので、それを開く。
右ペインに先ほど追加したラズパイのホスト名またはIPアドレスが表示されているので、選択して「ダウンロード」をクリック。

IntelliSenseは使えるのと使えないのとでは作業効率に雲泥の差が出るので、これをやらない手はない。
と考えながらしばらく待つと処理が終わります。

「OK」で閉じて次の設定へ。

プロジェクト>[プロジェクト名]のプロパティ を開く。
(メニューの下から2番目くらいにあるので下から見た方が早い)

ウィンドウ上部にある「プラットフォーム」の部分が「x64」とか「x86」になっていたら「ARM64」に変更しておく。

また、そのほかの項目は基本的にデフォルトのままでOKだと思うけど、「リモートルートディレクトリ」だけは趣味に応じて変更しておいた方が良いかもしれない。
ここで指定したディレクトリの中にVisualStudioで作成するプロジェクトの様々なファイルがコピーされていくため、わかりやすい名称に変更しておくとよいかも。

試しにビルド

試しにビルドしてみると・・・うん、なんとなくうまくビルドできてる気がする。

sshで接続しているラズパイでもビルドした「LCD.out」を同じように実行してみる。
(ちょっと階層深くて、projectの下を LCD/bin/x64/Debug とたどる必要がある)

実行して「[プロジェクト名]へようこそ!」と表示されればOK。

これで、使い慣れたWindowsで、VisualStudioで、ラズパイのプログラムが書ける!

sshで接続してviで書いてgccで・・・なんてことしなくても良いので楽ですねぇ・・・

この記事にコメントしてみる