docs構成
This commit is contained in:
parent
ab1e6707e2
commit
ffc968a476
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,4 +1,7 @@
|
|||||||
dist/
|
dist/
|
||||||
|
docs/html/
|
||||||
|
docs/latex/
|
||||||
|
|
||||||
# ---> C++
|
# ---> C++
|
||||||
# Prerequisites
|
# Prerequisites
|
||||||
*.d
|
*.d
|
||||||
|
|||||||
11
Dockerfile.doxygen
Normal file
11
Dockerfile.doxygen
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# mus
|
||||||
|
FROM alpine:3.20
|
||||||
|
|
||||||
|
# 必要なツールをインストール
|
||||||
|
RUN apk add --no-cache \
|
||||||
|
doxygen \
|
||||||
|
graphviz
|
||||||
|
|
||||||
|
WORKDIR /work
|
||||||
|
|
||||||
|
CMD ["doxygen", "Doxyfile"]
|
||||||
2868
docs/Doxyfile
Normal file
2868
docs/Doxyfile
Normal file
File diff suppressed because it is too large
Load Diff
0
readme/coding-conventions.md
Normal file
0
readme/coding-conventions.md
Normal file
154
readme/develop.md
Normal file
154
readme/develop.md
Normal file
@ -0,0 +1,154 @@
|
|||||||
|
# C/C++の開発環境
|
||||||
|
|
||||||
|
- [C/C++の開発環境](#ccの開発環境)
|
||||||
|
- [Linter](#linter)
|
||||||
|
- [テスト](#テスト)
|
||||||
|
- [Doc(ドキュメンテーション)](#docドキュメンテーション)
|
||||||
|
- [環境構築](#環境構築)
|
||||||
|
- [Dockerを活用する](#dockerを活用する)
|
||||||
|
- [doxygen 使い方](#doxygen-使い方)
|
||||||
|
- [CI / CDによる実行](#ci--cdによる実行)
|
||||||
|
- [Doxyfileの設定](#doxyfileの設定)
|
||||||
|
- [Docコメントの書き方](#docコメントの書き方)
|
||||||
|
|
||||||
|
|
||||||
|
## Linter
|
||||||
|
|
||||||
|
TODO: TBD
|
||||||
|
|
||||||
|
## テスト
|
||||||
|
|
||||||
|
TODO: TBD
|
||||||
|
|
||||||
|
## Doc(ドキュメンテーション)
|
||||||
|
|
||||||
|
C / C++ の自動ドキュメンテーションをしたい場合、
|
||||||
|
Doxygen(+Graphviz)が圧倒的スタンダードで、最もおすすめです。
|
||||||
|
|
||||||
|
* C / C++ / Java / Python などメジャー言語に対応
|
||||||
|
* コメントを解析して HTML / PDF / Markdown などへ出力
|
||||||
|
* 関数・構造体・クラスの関係図(UML・依存グラフ)を自動生成
|
||||||
|
* C++ テンプレートや名前空間にも対応
|
||||||
|
* Graphvizを入れれば図が自動で描かれる
|
||||||
|
|
||||||
|
### 環境構築
|
||||||
|
|
||||||
|
**Macの場合**
|
||||||
|
|
||||||
|
```sh
|
||||||
|
brew install doxygen graphviz
|
||||||
|
```
|
||||||
|
|
||||||
|
**Linux(Ubuntu)の場合**
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo apt install doxygen graphviz
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Dockerを活用する
|
||||||
|
|
||||||
|
[Dockerfileはこちら](../Dockerfile.doxygen)
|
||||||
|
|
||||||
|
Dockerイメージをビルドする
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker build -f Dockerfile.doxygen -t dev-doxygen .
|
||||||
|
```
|
||||||
|
|
||||||
|
Linuxでコマンドを実行する
|
||||||
|
|
||||||
|
|
||||||
|
```sh
|
||||||
|
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 使い方
|
||||||
|
|
||||||
|
**設定ファイルを生成**
|
||||||
|
|
||||||
|
```sh
|
||||||
|
doxygen -g
|
||||||
|
```
|
||||||
|
|
||||||
|
Doxyfileが作成される
|
||||||
|
|
||||||
|
**ドキュメント生成**
|
||||||
|
|
||||||
|
```sh
|
||||||
|
doxygen Doxyfile
|
||||||
|
```
|
||||||
|
|
||||||
|
* html/ に HTML ドキュメント
|
||||||
|
* latex/ に PDF 用のファイルが出力される(必要なら make)
|
||||||
|
|
||||||
|
### CI / CDによる実行
|
||||||
|
|
||||||
|
**Git Actionsで生成の場合**
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- 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`を設定する
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# ドキュメント化したいディレクトリ
|
||||||
|
INPUT = ../src ../include
|
||||||
|
|
||||||
|
# INPUT 内を再帰的に探索
|
||||||
|
RECURSIVE = YES
|
||||||
|
|
||||||
|
# OUTPUT は docs/html に出す
|
||||||
|
OUTPUT_DIRECTORY = ./html
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Docコメントの書き方
|
||||||
|
|
||||||
|
C言語の場合
|
||||||
|
|
||||||
|
```c
|
||||||
|
/**
|
||||||
|
* @brief 二数の最大値を返す関数
|
||||||
|
* @param a 整数
|
||||||
|
* @param b 整数
|
||||||
|
* @return 最大値
|
||||||
|
*/
|
||||||
|
int max(int a, int b);
|
||||||
|
```
|
||||||
|
|
||||||
|
C++言語の場合
|
||||||
|
|
||||||
|
```c
|
||||||
|
/**
|
||||||
|
* @class User
|
||||||
|
* @brief ユーザー情報を扱うクラス
|
||||||
|
*/
|
||||||
|
class User {
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief コンストラクタ
|
||||||
|
*/
|
||||||
|
User(std::string name, int age);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 名前を取得する
|
||||||
|
*/
|
||||||
|
std::string getName() const;
|
||||||
|
```
|
||||||
@ -4,7 +4,12 @@
|
|||||||
*/
|
*/
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Main function
|
||||||
|
* @return int Exit status
|
||||||
|
*/
|
||||||
int main(void) {
|
int main(void) {
|
||||||
|
|
||||||
printf("Hello, world!\n");
|
printf("Hello, world!\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user