
2026/04/10 1:04
**HN(ハッカーナウ)投稿:C/C++向けにCargo風ビルドツールを作成しました**
RSS: https://news.ycombinator.com/rss
要約▶
日本語訳:
Craft は、C/C++ の軽量でオープンソースのビルドヘルパーです。単一の
から自動的にcraft.tomlを生成し、プロジェクト作成と依存関係管理を簡素化します。CMakeLists.txt一般的なプロジェクトは、
、生成されたcraft.toml、ソース/インクルードディレクトリ、および必要に応じてカスタムロジック用のオプションCMakeLists.txtを含みます。CMakeLists.extra.cmake最新の CLI は
、project、add、remove、update、build、run、genなどのコマンドを提供します。依存関係はclean(Git URL またはローカルパス)で指定され、craft.tomlにクローンされます;ツールは自動的に CMake を更新し、.craft/deps/、path、git、tag、branchなどのフィールドをサポートします。links組み込みテンプレートには実行可能ファイル、静的ライブラリ、共有ライブラリ、およびヘッダーオンリー プロジェクトが含まれます。ユーザーは
でカスタムテンプレートを作成または管理できます。グローバルデフォルト(~/.craft/templates/custom/、language、c_standard、cpp_standard)はtemplateに保存されますが、プロジェクトごとに上書き可能です。~/.craft/config.tomlインストールは簡単で、提供された
(macOS / Linux)またはinstall.sh(Windows)スクリプトを実行するだけです。Git と CMake が必要です。install.ps1コマンドは新規プロジェクトの scaffolding を行うか既存プロジェクトを移行し、事前に存在していたcraft initはバックアップされます。CMakeLists.txtCraft は
で自己更新でき、GitHub 上の新しいリリースを確認します。Issue やプルリクエストで貢献が歓迎されるため、コミュニティ主導型ツールとして手動 CMake スクリプトを削減し、チーム全体のオンボーディング速度を向上させます。craft upgrade
本文
C と C++ プロジェクト用の軽量ビルドツール – Cargo を想像して、C/C++ へ適応したもの。
Craft は CMake の摩擦を排除します。
craft.toml という単一ファイルでプロジェクトを記述し、Craft が必要な CMake 設定を自動生成し、依存関係を管理し、シンプルなコマンドラインインターフェースを提供します。
Craft の仕組み
にプロジェクトを定義する。craft.toml- Craft が
を生成する。CMakeLists.txt - 依存関係は自動で取得される。
- CMake が裏でビルドを実行する。
簡単な例
# 新規プロジェクト作成 craft project my_app cd my_app # 依存関係を追加 craft add --git https://github.com/raysan5/raylib.git --links raylib # ビルド craft build # 実行 craft run
Craft が解決する課題
-
単一ファイルで設定完結
[project] name = "my_app" version = "0.1.0" language = "cpp" cpp_standard = 17 [build] type = "executable" include_dirs = ["include"] source_dirs = ["src"] -
自動依存関係管理
craft add --path ../PhysicsEngine # ローカル Craft プロジェクト craft add --git https://github.com/raysan5/raylib --tag 5.5 # Git から取得 craft remove raylib # 依存関係を簡単に削除 craft update # すべての依存関係を更新 -
高速セットアップ用テンプレート
craft template save my_game_template craft project new_game --template my_game_template
インストール
| プラットフォーム | コマンド |
|---|---|
| macOS & Linux | `curl -fsSL https://raw.githubusercontent.com/randerson112/craft/main/install.sh |
| Windows (PowerShell) | `irm https://raw.githubusercontent.com/randerson112/craft/main/install.ps1 |
必要条件: git, cmake
インストール確認
craft --version craft help
すぐに始める
craft project my_app cd my_app craft build craft run
コマンドとドキュメント
| コマンド | 説明 |
|---|---|
| , , などを含む完全なディレクトリ構造を作成します(スタート用 main も生成)。 |
| 現在または指定したディレクトリに Craft プロジェクトを初期化。空、既存、移行ケースを自動判定。 |
| 必要なら を再生成し、足りない依存関係を取得してから CMake でビルドします。 |
| プロジェクトの実行ファイル(デフォルトは に指定)を起動。 |
| で最初に指定された include/source ディレクトリにボイラープレートコードを生成。 |
| ディレクトリとコンパイル済みアーティファクトを削除。 |
| 依存関係を追加。Git の場合は にクローンされます。 |
| から依存関係を削除し、該当するクローンも消去(あれば)。 |
| Git の依存関係を更新(固定タグはスキップ)。 |
| 再利用可能なプロジェクトテンプレートを管理 (, , , , )。 |
| に保存されたグローバルデフォルトの読み書き。 |
| コマンド・サブコマンド、または のヘルプを表示。 |
| Craft 自体を最新バージョンに更新。 |
内蔵テンプレート
| テンプレート | 説明 |
|---|---|
| 標準的な実行可能プロジェクト(デフォルト)。 |
| 静的ライブラリプロジェクト。 |
| 共有ライブラリプロジェクト。 |
| ヘッダーオンリーライブラリ。 |
例:
craft project my_lib --template static-library --lang c
craft.toml – 真のソース
[project]
フィールド
[project]| キー | 必須 | 説明 |
|---|---|---|
| はい | プロジェクト名(実行ファイル名も同じ)。 |
| はい | SemVer 文字列、例: 。 |
| はい | または 。 |
| いいえ | C 標準:, , , , 。 |
| いいえ | C++ 標準:, , , , 。 |
[build]
フィールド
[build]| キー | 必須 | 説明 |
|---|---|---|
| はい | , , , のいずれか。 |
| いいえ | インクルードパスに追加するディレクトリ(デフォルト: )。 |
| いいえ | ソースファイルを含むディレクトリ(デフォルト: )。 |
| いいえ | ライブラリ検索パス。 |
| いいえ | リンク対象のライブラリ。 |
[dependencies]
フィールド
[dependencies]Craft が
craft add / craft remove で管理します。例:
[dependencies] my_lib = { path = "../my_lib" } raylib = { git = "https://github.com/raysan5/raylib", tag = "5.5" } json = { git = "https://github.com/nlohmann/json", tag = "v3.11.2" } SFML = { git = "https://github.com/SFML/SFML", tag = "3.0.0", links = ["SFML::Graphics","SFML::Window","SFML::System"] }
| キー | 説明 |
|---|---|
| ローカル Craft プロジェクトへのパス。 |
| クローンする Git URL。 |
| 固定タグ。 |
| 固定ブランチ。 |
| CMake のリンクターゲット(Craft 以外のプロジェクト向け)。 |
注:
は自動生成されますので、直接編集しないでください。CMakeLists.txt
カスタム CMake コードを追加したい場合は、プロジェクトルートにを置くと、生成されたファイルの最後にインクルードされます。CMakeLists.extra.cmake
グローバル設定
デフォルトは
~/.craft/config.toml に保存されています。
[defaults] language = "cpp" c_standard = 99 cpp_standard = 17 template = "executable"
新規プロジェクト作成時に使用され、
craft.toml の設定が優先されます。
一般的なディレクトリ構造
my_app/ ├── craft.toml ├── CMakeLists.txt # Craft が生成。直接編集しないでください。 ├── CMakeLists.extra.cmake # 任意、カスタム CMake コードを追加 ├── build/ ├── include/ ├── src/ │ └── main.cpp └── .craft/ └── deps/ # Git 依存関係がクローンされる場所
貢献
Craft はオープンソースでコミュニティ主導です。
Issue や Pull Request を通じてぜひご協力ください。