C言語

C言語プロジェクト構成テンプレートとGit管理の完全ガイド

ⓘ本ページはプロモーションが含まれています

お得なお知らせ

スポンサードリンク
AI時代のキャリア構築

プログラミング学習、今日から動き出す

「何から始めるか」で止まっている人こそ、無料説明会や本で自分に合うルートを30分で確定できます。

Enjoy Tech!|月額制でWeb系に強い▶ (Kindle本)ITエンジニアの転職学|後悔しないキャリア戦略▶

▶ AIコーディング環境なら  実践Claude Code入門(Amazon)が実務で即使える入門書です。Amazonベストセラーにも選ばれていますよ。


スポンサードリンク

1. 推奨ディレクトリ構成

フォルダ 主な役割
src アプリ本体やライブラリ実装。機能単位で module.c のように命名
include 外部から利用されるヘッダを配置し、#include "mylib.h" だけで参照できる
test テストコードは独立したビルド対象。CI でも実行可能にする
build cmake --build の出力先。.gitignore に必ず追加
docs Doxygen 設定ファイルや生成物を格納
scripts バージョンヘッダ自動生成、コード整形などの補助ツール

この構造は 可読性・拡張性・CI 連携 のすべてに好影響を与えます。


2. ビルドシステム ― Makefile と CMake の比較

2‑1. 選択指針

  • 小規模かつ依存がほぼ無いプロトタイプは 単一 Makefile で十分。
  • 複数プラットフォーム・外部ライブラリ・テストフレームワークを扱う本格的な開発は CMake が推奨。

2‑2. CMake の最低バージョン

  • VERSION3.22 に固定すると、古い Linux ディストリビューションや Windows の CI イメージでインストールが必要になるケースがあります。
  • 本テンプレートでは 3.15 以上 があれば動作し、target_precompile_headersFetchContent といった新機能はオプショナルとして条件分岐させています。

2‑3. CMakeLists.txt(最小構成)

ポイント
target_include_directories の第1引数はまだ作成されていないので、PUBLIC/PRIVATE を使う場合は add_executable 後に記述するか、INTERFACE ライブラリを介すとエラーが出ません。上記はシンプルさを優先した例です。

2‑4. Windows 環境での注意点

作業 Unix 系コマンド Windows (PowerShell)
実行権限付与 chmod +x scripts/generate_version.sh Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass(一時的にスクリプト実行許可)
スクリプト呼び出し ./scripts/generate_version.sh .\scripts\generate_version.ps1 (PowerShell 用に書き換える)
CMake ビルド cmake -B build && cmake --build build 同上(Git Bash でも可)

代替スクリプト例(PowerShell)

CMakeLists.txt 側で拡張子を判定し、.sh.ps1 のどちらかが存在すれば実行するように設定できます。


3. 自動生成ツール(version.h)活用法

3‑1. 目的

  • 一元管理:リポジトリのタグとヘッダ内のバージョン文字列を自動的に同期。手作業による齟齬を防止。
  • CI との親和性:ビルド前ステップとして実行すれば、プッシュごとに最新バージョンが組み込まれる。

3‑2. 実装フロー(Unix + Windows 両対応)

  1. リポジトリ取得
    bash
    # Unix 系シェル
    git clone https://github.com/yourname/c-template.git my_project
    cd my_project/scripts

    powershell
    # PowerShell
    git clone https://github.com/yourname/c-template.git my_project
    Set-Location my_project\scripts

  2. スクリプト実行(自動生成)

  3. Unix: ./generate_version.sh
  4. Windows: .\generate_version.ps1

  5. CMake への組み込みは前節の gen_version ターゲットを参照。

  6. コード側で利用

  1. GitHub Actions へ組み込み(後述の CI セクションで詳細)

4. Git 管理と .gitignore のベストプラクティス

4‑1. .gitignore のポイント

  • !.vscode/settings.json は共有設定でない限り削除
    プロジェクト固有のフォーマッタや拡張子関連は settings.json に入ることが多く、個人のエディタテーマやキーバインドまでリポジトリに流出すると情報漏洩リスクがあります。共有したい設定だけを settings.json から抜き出し、.vscode/settings.json除外(コメントアウト)するか、別ファイル (shared.code-workspace) にまとめて管理してください。

4‑2. 初期化手順とブランチ戦略

  • 2 本流モデルmain / develop)は、安定版と開発中コードの境界が明確になるため CI 設定が楽です。
  • タグ付けは Semantic Versioning に従い、GitHub Actions で自動的に作成・プッシュするパイプラインを用意すると管理がシンプルです。

4‑3. Windows でも同様のコマンドが利用可能

PowerShell では git 系コマンドはそのまま使用できます。ブランチ名変更は git branch -M main、リモート追加も同一です。


5. VS Code の開発環境設定(CMake Tools + C/C++)

5‑1. 必要な拡張機能

拡張 ID
C/C++ ms-vscode.cpptools
CMake Tools vector-of-bool.cmake-tools

共有設定.vscode/settings.json以下の項目だけ を残すと安全です
json
{
"cmake.generator": "Ninja",
"C_Cpp.intelliSenseMode": "gcc-x64"
}

5‑2. tasks.json(ビルド・テスト)

5‑3. launch.json(デバッグ)

  • Windows でのデバッガMIModelldbcppvsdbg に変更すれば Visual Studio デバッガが利用できます。

6. CI/CD(GitHub Actions)— 最小構成テンプレート

6‑1. ポイント解説

ステップ 内容
matrix.os Linux と Windows の両方でビルドできるかを同時に検証。クロスプラットフォーム対応の必須チェックです。
Generate version.h OS 毎に実行権限付与や PowerShell 実行ポリシー設定が異なるため、条件分岐で切り替えています。
ctest テスト結果は GitHub の Checks に自動掲載され、失敗した場合は PR が赤くなります。

7. まとめ

  1. ディレクトリ構成src/ include/ test/ build/ docs/ scripts/ をベースにし、役割ごとに明確に分離するだけで CI・IDE の設定が楽になります。
  2. ビルドは CMake がデフォルト。最低バージョンは 3.15 とし、3.22 固有機能はオプション化すれば古い環境でも問題なく動作します。
  3. 自動生成ツール(version.h)でタグとコードのバージョンを常に同期させ、CI のビルド前ステップとして組み込むだけで手動ミスが激減します。
  4. Git 管理では .gitignore にビルド成果物・IDE キャッシュを除外し、個人設定(.vscode/settings.json)は共有対象から外すことを推奨。2 本流ブランチと Semantic Versioning タグでリリース管理を標準化します。
  5. VS Code の統合CMake Tools + C/C++ 拡張だけで完結。tasks.jsonlaunch.json をプロジェクトに入れておけば、メンバー全員が「ビルド / テスト / デバッグ」をワンクリックで実行可能です。
  6. CI/CDは GitHub Actions のマトリクスジョブで Linux/Windows 両方を検証し、generate_version スクリプトの実行やテスト結果の自動レポートを提供します。

これらの手順と設定をそのままプロジェクトにコピーすれば、安全・高速・拡張性の高い C 言語開発基盤が即座に構築できます。ぜひ試してみてください!

スポンサードリンク

お得なお知らせ

スポンサードリンク
AI時代のキャリア構築

プログラミング学習、今日から動き出す

「何から始めるか」で止まっている人こそ、無料説明会や本で自分に合うルートを30分で確定できます。

Enjoy Tech!|月額制でWeb系に強い▶ (Kindle本)ITエンジニアの転職学|後悔しないキャリア戦略▶

▶ AIコーディング環境なら  実践Claude Code入門(Amazon)が実務で即使える入門書です。Amazonベストセラーにも選ばれていますよ。


-C言語