見出し画像

DOAP2023開発日記 #5

#1〜#4のまとめ

また間が開いてしまった。私は何をしていたのかを振り返る。
#1: Sailsサーバの新規作成
#2: Next.jsアプリの新規作成
#3: SailsサーバでREST APIを新規作成
#4: Next.jsからSailsへREST APIのプロキシ作成
なるほど。では、DOAP本体を作成する段階になったので、続きの作業をしていく。

C++開発環境

DOAPは、Windows(64bit)/Linux(Red hat系)上のDominoサーバで動作する。
標準のC++だけでもいいのだが、ここでは個人的に慣れ親しんだ、オープンソースのクロスプラットフォーム開発フレームワーク「Qt」を使う。
コンパイラは、Windowsでは「Visual C++ 2019」、Linuxでは「GCC」を使用する。
ただし、当初はWindowsでの開発とする。

最強IDE「Visual Studio Code」

長らくQtを使った開発には、純正の「Qt Creator」を使ってきた。
一方で、ReactやSailsのようなJavaScript/TypeScriptの開発には「VSCode」を使ってきた。
どうにかVSCodeに統一できないか思案してきたが、これを機にVSCodeでQtプロジェクトを開発する土台を作ってみる。

プロジェクトフォルダをワークスペースに追加する

まずはDOAPを開発するためのフォルダを作成し、VSCodeのワークスペースに追加していく。
VSCodeを起動したとき、ウィンドウが空っぽだったと仮定する。プライマリサイドバーの「エクスプローラー」の「フォルダーを追加します」をクリックするか、メニューの「ファイル>フォルダーをワークスペースに追加…」を選択する。

フォルダーを追加

開いたダイアログで、新規フォルダを作成して追加する。ここでは「doap2023」というフォルダを作って追加した。
追加ボタンをクリックすると、最近のVSCodeでは次のような確認ダイアログが表示されるようである。

信頼せよ!

これで開発プロジェクトのベースができた。
ワークスペースに名前を付けて保存しておくと、プロジェクト単位で作業ウィンドウを保持できるので、非常に便利である。
メニューの「ファイル>名前を付けてワークスペースを保存…」を選択してワークスペースを保存できる。

名前を付けてワークスペースを保存

私のユーザプロファイルディレクトリ(標準ではC:/Users/myname)には、ワークスペースファイルがゴロゴロ転がっている。

拡張機能「C/C++ Extension Pack」

VSCodeでC/C++を開発する際は、拡張機能「C/C++」を使用するのがいいらしい。これ単独でもいいのだが、今回はこれ以外に関連する機能をまとめて追加できる「C/C++ Extension Pack」をインストールする。

C/C++ Extension Pack

なお、この画面上の他の6つの拡張機能が「関連する機能」だ。

C/C++の構成(UI)

C/C++拡張機能をインストールしたら、機能を構成する。
メニューの「表示>コマンドパレット…」を選択する。

拡張機能の入口「コマンドパレット」を起動

もしくは、直接「Ctrl+Shift+P」でもコマンドパレットを開くことができる。

コマンドパレット

そこから「C/C++: 構成の編集 (UI)」を選択する。拡張機能が多くて探せない時は検索窓で絞り込むことができる。
「C/C++: 構成の編集 (UI)」を選択すると、UIベースのC/C++構成画面が開く。
いろいろ試してみて以下のような設定値で落ち着いた。参考までに。

構成名とコンパイラパス
IntelliSenseモードとパスを含める

ここで「パスを含める(インクルードパス)」の設定値は、上からdoap本体、npp2023ヘッダライブラリ(Notes C APIをC++でラップした自作ライブラリ)、Notes C APIヘッダライブラリ、Qtヘッダライブラリへのパスになる。「/**」は再帰的に検索してくれる設定で、これがないと直下のファイルしか検索できなくなる。また、「${workspaceFolder}」という記述は、VSCodeで使用可能な定義済み変数の1つで、ワークスペースフォルダに置き換わる。なので、この場合「doap2023/doap」フォルダのフルパスになる。ちなみに、「doap2023/doap」はQtプロジェクト的にはサブプロジェクトフォルダとなる。

定義、C標準とC++標準

ここで、「定義」にある「NT」は、Windowsで開発していることをNotes C APIに伝えるものである。
また、「DOAP_LIBRARY」は、コード内で使用している「DOAP_EXPORT」シンボルをライブラリのエキスポート対象として使用するための定義になる。なお、このコードを外部から使用する側になると、自動的にインポート対象とすることができる。もともとはQt Creatorが自動的に生成してくれる便利なテンプレートの流用である。

詳細設定のWindows SDKバージョン

C/C++の構成(JSON)

ここまでのUIによる構成はJSONファイルとして保存される。
プロジェクトフォルダからのパスでは「doap2023/.vscode/c_cpp_properties.json」となる。
せっかくなので、このJSONファイルも以下に示す。

{
  "configurations": [
    {
      "name": "Win32",
      "includePath": [
        "${workspaceFolder}/doap/**",
        "../npp2023/npp/include/**",
        "Y:/notesapi/include",
        "C:/Qt/5.15.2/msvc2019_64/include/**"
      ],
      "defines": [
        "UNICODE",
        "_UNICODE",
        "NT",
        "DOAP_LIBRARY"
      ],
      "windowsSdkVersion": "10.0.19041.0",
      "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe",
      "cStandard": "c17",
      "cppStandard": "c++17",
      "intelliSenseMode": "windows-msvc-x64"
    }
  ],
  "version": 4
}

まとめ

VSCodeでC/C++を開発するための、入口中の入口をご紹介した。
なお、ここで紹介したワークスペース中の設定JSONファイルを保管する「.vscode」フォルダは、Gitの追跡対象外指定ファイル「.gitignore」で追跡できないようにしておくことをオススメする。基本的に「.vscode」内に設定されるものはローカル独特なものと捉えた方がいい。doap2023の場合も、このWindowsベースと、Linuxベースによる設定では.vscodeフォルダの中身はガラッと変わるので、追跡対象外にしている。


この記事が気に入ったらサポートをしてみませんか?