cpp-common-code/readme/develop.md
2025-12-11 01:04:58 +09:00

3.1 KiB
Raw Blame History

C/C++の開発環境

Linter

TODO: TBD

テスト

TODO: TBD

Doc(ドキュメンテーション)

C / C++ の自動ドキュメンテーションをしたい場合、 Doxygen(Graphviz)が圧倒的スタンダードで、最もおすすめです。

  • C / C++ / Java / Python などメジャー言語に対応
  • コメントを解析して HTML / PDF / Markdown などへ出力
  • 関数・構造体・クラスの関係図UML・依存グラフを自動生成
  • C++ テンプレートや名前空間にも対応
  • Graphvizを入れれば図が自動で描かれる

環境構築

Macの場合

brew install doxygen graphviz

Linux(Ubuntu)の場合

sudo apt install doxygen graphviz

Dockerを活用する

Dockerfileはこちら

Dockerイメージをビルドする

docker build -f Dockerfile.doxygen -t dev-doxygen .

Linuxでコマンドを実行する

mkdir -p docs
# docker run --rm  -v "$(pwd)":/work -w /work/docs  dev-doxygen <コマンド>
# 初期化コマンド
docker run --rm  -v "$(pwd)":/work -w /work/docs  dev-doxygen doxygen -g
# ドキュメントを生成する
docker run --rm  -v "$(pwd)":/work -w /work/docs  dev-doxygen doxygen Doxyfile

doxygen 使い方

設定ファイルを生成

doxygen -g

Doxyfileが作成される

ドキュメント生成

doxygen Doxyfile
  • html/ に HTML ドキュメント
  • latex/ に PDF 用のファイルが出力される(必要なら make)

CI / CDによる実行

Git Actionsで生成の場合

- name: Generate Doxygen docs
  run: doxygen docs/Doxyfile

- name: Deploy to GitHub Pages
  uses: peaceiris/actions-gh-pages@v3
  with:
    github_token: ${{ secrets.GITHUB_TOKEN }}
    publish_dir: ./docs/html

Doxyfileの設定

docs/Doxyfileを設定する

  • PROJECT_NAMEを実際のプロジェクト名に変更する
# ドキュメント化したいディレクトリ
INPUT = ../src ../include

# INPUT 内を再帰的に探索
RECURSIVE = YES

# C向け出力最適化
OPTIMIZE_OUTPUT_FOR_C = YES
# 全シンボル抽出
EXTRACT_ALL = YES

Docコメントの書き方

C言語の場合

/**
 * @brief  二数の最大値を返す関数
 * @param  a  整数
 * @param  b  整数
 * @return 最大値
 */
int max(int a, int b);

C++言語の場合

/**
 * @class User
 * @brief ユーザー情報を扱うクラス
 */
class User {
public:
    /**
     * @brief コンストラクタ
     */
    User(std::string name, int age);

    /**
     * @brief 名前を取得する
     */
    std::string getName() const;