4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C/C++を使用したFlutterプラグイン開発においてVSCode+clangd拡張を使用する方法

Last updated at Posted at 2024-09-05

はじめに

FlutterではDartのFFIを使用することでC APIを公開している既存のネイティブライブラリを使用することができます。1
そのため、Flutterプラグイン開発でC/C++を使用する場面が出てくることが予想されます。
ぼくはC/C++開発においてVSCodeのclangd拡張を使用しており、Flutterプラグイン開発でclangdの設定に手こずったので設定方法を残します。

前提条件

  • OS: Ubuntu20.04
  • Flutter: 3.24.1
  • Linux向けのFlutterプラグイン開発を行っている
  • エディタ: VSCode

手順

1. compile_commands.jsonを作成する

Flutterプラグインのディレクトリ構成は以下のようになっているはずです。(https://codelabs.developers.google.com/codelabs/flutter-ffigen?hl=ja#2 より)

<開発中のFlutterプラグイン名>
├── CHANGELOG.md
├── LICENSE
├── README.md
├── analysis_options.yaml
├── android
│   ├── build.gradle
│   ├── ffigen_app_android.iml
│   ├── local.properties
│   ├── settings.gradle
│   └── src
├── example
│   ├── README.md
│   ├── analysis_options.yaml
│   ├── android
│   ├── ffigen_app_example.iml
│   ├── ios
│   ├── lib
│   ├── linux
│   ├── macos
│   ├── pubspec.lock
│   ├── pubspec.yaml
│   └── windows
├── ffigen.yaml
├── ffigen_app.iml
├── ios
│   ├── Classes
│   └── ffigen_app.podspec
├── lib
│   ├── ffigen_app.dart
│   └── ffigen_app_bindings_generated.dart
├── linux
│   └── CMakeLists.txt
├── macos
│   ├── Classes
│   └── ffigen_app.podspec
├── pubspec.lock
├── pubspec.yaml
├── src
│   ├── CMakeLists.txt
│   ├── ffigen_app.c
│   └── ffigen_app.h
└── windows
    └── CMakeLists.txt

このうち<開発中のFlutterプラグイン名>/exampleに移動し、以下のコマンドを実行してビルドを行います。

flutter run

そうすると以下のようビルドに失敗した旨のエラーが出ますが一旦無視します。

Error: Build process failed

その後<開発中のFlutterプラグイン名>/example/linuxに移動し以下のコマンドを実行しcompile_commands.jsonを生成します。(参考)

mkdir build && cd build
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 ..

2. clangd拡張の設定をする

VSCodeのclangd拡張から「拡張機能の設定」メニューに進み、ワークスペースタブを選択したあと「Clangd: Arguments」で以下の項目を追加します。

--compile-commands-dir=${workspaceFolder}/example/linux/build

上記の項目を追加後、ウィンドウをリロードするとclangd拡張が使えるようになります。

  1. https://codelabs.developers.google.com/codelabs/flutter-ffigen?hl=ja#0

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?