Repolode
tsoding

tsoding/nob.h

Cコンパイラだけをビルドの依存関係として、Cでビルドスクリプトを書けるシングルヘッダーライブラリ。

代替できる製品:CMakeGNU Make

スター
3,329
フォーク
215
未解決の Issue
85
最終コミット
4 日前

これは何?

nob.hは、Make、CMake、シェルスクリプトの代わりにCでビルドレシピを書くための単一ファイルのCライブラリです。NoBuildと呼ばれるこの仕組みでは、Cコンパイラだけでプロジェクトのビルドシステムを立ち上げます。小さなnob.cプログラムを一度コンパイルすれば、そのプログラムでプロジェクトの残りをビルドできます。

このライブラリは、ヘッダーファイル1つとしてプロジェクトにコピーして使うことを想定しています。ビルドロジックは通常のCコードなので、プロジェクト内のコードをそのまま再利用したり、ビルド用に書いたヘルパーをプロジェクト側で利用したりできます。作者はこのライブラリを実験的なものと位置付けており、大掛かりな依存関係管理の仕組みではなく、シンプルで移植性の高いビルドを求めるC/C++プロジェクトに適しているとしています。

作者によると、これは本格的なビルドジェネレーターを使うというより、Cでシェルスクリプトを書く感覚に近いため、Cに慣れていて、必要なユーティリティを自分で書けることが前提です。同じアイデアを実装したC++、Java、Fortran向けの移植版もあります。

主な機能

  • 01単一のヘッダーファイルとして配布され、プロジェクトにそのままコピーして使えます。
  • 02必要なのはCコンパイラだけで、make、CMake、シェルへの依存はありません。
  • 03ビルドロジックをCで記述でき、プロジェクトのコードと共有できます。
  • 04Cコンパイラが利用できるLinux、macOS、Windows、FreeBSDなどのプラットフォームで動作します。

ユースケース

  • makeやCMakeをインストールせずに、小規模または中規模のC/C++プロジェクトをビルドする。
  • OSを問わず同じように動作する、移植性の高いビルドスクリプトを書く。
  • コンパイラのコマンド1つで、Cプロジェクトのビルドを立ち上げる。

クイックスタート

  1. 1

    リポジトリから単一ヘッダーファイル nob.h をダウンロードします

  2. 2

    nob.h をプロジェクトにコピーして使い始めましょう。例は how_to/ フォルダーを参照してください

使う前に知っておきたいこと

  • 作者は、適合性を保証するものではない実験的な研究プロジェクトだと説明しています。
  • CMake形式のモジュールや多数の依存関係に頼るプロジェクトには適していません。
  • ビルドスクリプトを書くには、Cで必要な処理を自分で実装できるスキルが必要です。
  • CおよびC++のプロジェクトでのみ意味があります。

トピック

よくある質問

nob.h とは?
Cコンパイラだけをビルドの依存関係として、Cでビルドスクリプトを書けるシングルヘッダーライブラリ。 nob.hは、Make、CMake、シェルスクリプトの代わりにCでビルドレシピを書くための単一ファイルのCライブラリです。NoBuildと呼ばれるこの仕組みでは、Cコンパイラだけでプロジェクトのビルドシステムを立ち上げます。小さなnob.cプログラムを一度コンパイルすれば、そのプログラムでプロジェクトの残りをビルドできます。
nob.h は無料で使えますか?ライセンスは?
nob.h は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
nob.h は今もメンテナンスされていますか?
活発にメンテナンス中。nob.h の最終コミットは 2026年10月18日 です。
nob.h は何に使えますか?
makeやCMakeをインストールせずに、小規模または中規模のC/C++プロジェクトをビルドする。 OSを問わず同じように動作する、移植性の高いビルドスクリプトを書く。 コンパイラのコマンド1つで、Cプロジェクトのビルドを立ち上げる。
nob.h のインストール方法は?
リポジトリから単一ヘッダーファイル nob.h をダウンロードします nob.h をプロジェクトにコピーして使い始めましょう。例は how_to/ フォルダーを参照してください
nob.h はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/tsoding/nob.h

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト