私は C++ で新しいプロジェクトを開始することを検討しています - 最初は自分の時間に - 利用可能なビルド システムを調査しています。答えは「多く、そしてそれらはすべてひどい」であるように思われます.
これに特に必要な機能は次のとおりです。
- C++11 のサポート
- クロスプラットフォーム (Linux が主なターゲットですが、少なくとも Windows でもビルドできます)
- 適切な単体テストのサポート
- コードを分離するための複数のモジュールのサポート
- コード生成のサポート (asn1c または protobuf を使用 - まだ 100% 確実ではありません)
- メンテナンスが容易
これで、CMake と Autotools を使用して、そのうちの 1 ~ 4 つを簡単に実行できることがわかりました。おそらく、SCons と Waf、そして他のカップルとも。問題は、それらを使用してコード生成を正しく行う方法を考えたことがないことです。つまり、ビルド プロセスが最初に実行されるまで存在しないソース ファイルであるため、ビルド システムが実行可能コードに変換できる必要があるソース ファイルです。しかし、ビルドが開始されるまで実際にはわかりません...(特にASN1Cは、一緒に動作できる必要がある数十のヘッダーとソースファイルを生成し、実際に生成されるファイルのセットは、asnファイルの内容によって異なります)また、これらのどれも特に保守が容易ではないという事実 - CMake と Autotools には、それらが機能するために管理する必要がある独自のスクリプトの膨大なセットがあります。
それで、このようなものにはどのビルドシステムが推奨されますか? それとも、今のところ make ファイルとシェル スクリプトで行き詰まるのでしょうか?