linux/freebsd 用に作成する代替手段は何ですか?
11 に答える
私はSConsが好きです。SConstructすべてのビルドスクリプト(ファイル)も構文的に有効なPythonプログラムであるように構築されています。したがって、必要に応じて、任意のPythonロジックをビルドスクリプトに組み込むことができます。
makeまた、多くの種類の依存関係を自動的に計算するよりもはるかに高速です。
私の最初の質問は、聴衆は何ですか。これは、チームだけが構築する社内ソフトウェアを構築するためのものですか?もしそうなら、すでに提示されているオプションのいくつかを調べてください。これが他の人が構築するものである場合は、makeに固執するか、makefileを作成してそれらを出荷するツールを使用してください。Linuxやその他のUNIXプラットフォームではautoconfとautomakeを使用しています。私の意見では、構成以外のことを行うには非常に正当な理由が必要です。作る; インストールします。Boostには独自のツール(Jamの修正バージョン)があり、通常とは異なるマシンでコンパイルする必要があるたびにイライラします。
cmakeとimakeはどちらもビルドユーティリティですが、Imakeはメンテナンスされていません。Cmakeもクロスプラットフォームであり、Windowsでも使用できます。
Javaに興味がある場合、ANTはJavaを対象としたビルドツールです(Makeではうまく機能しません)。
Troll techは、 QTの構築に使用するqmakeというツールを作成します。それはmakefilesを生成することによって機能します-Trollはクロスプラットフォームビルドをサポートするためのツールを必要としていました-それであなたはまだ別のmakeユーティリティを必要としています。
まったく違うものを探しているなら、Antがあります。私自身はそれほど興味はありませんが、移植性の利点がいくつかあります(UNIXシェルに依存しないなど)。
Automake:pは、ほとんどのLinuxアプリディストリビューションで一般的に使用されていますが、Makefileよりも少し多くの作業を提供しますが、より良い結果が得られますhttp://www.gnu.org/software/automake/
http://www.openismus.com/documents/linux/automake/automake.shtml<-automakeとautoconfの使用方法に関する優れた説明
ジャムについて良いことを聞いたことがあります。
OMakeは、自動依存関係分析を備えたC / C ++、OCaml、およびLaTeX用のビルドツールです。複数のディレクトリにプロジェクトを簡単に構築でき、タイムスタンプではなくMD5の合計に基づいて変更を検出します。また、バックグラウンドで実行できるモードがあり、ファイルが変更されるたびにプロジェクトをビルドします。一般に、一般的な種類のプロジェクト(C / C ++またはOCamlプログラムおよびライブラリ)をビルドするのに必要なコードは、makeよりも少なくなります。私はより大きなプロジェクトのためにそれを試していません。
OCamlでプログラミングしたい場合、このツールは非常に便利です。OCamlリンカでは、コンパイルされたモジュールが依存関係の順序でコマンドラインに表示される必要があり、何かが変更されるたびにこの順序を把握するのは簡単ではありません。
私は自分のプロジェクトの多くで CMake を使用しており、いくつかの autotools ベースのプロジェクトの移植も含まれています。主に C/C++ クロス プラットフォーム プロジェクトに適しています。
私が取り組んでいるプロジェクトは、Cons代わりに使用するいくつかのコードを継承しました( Greg Hewgillの回答Makeと混同しないでください)。SCons
ConsSConsPython で書かれているのと同じように、Perl で書かれています。依存関係を自動的に管理し、ビルド スクリプト内で任意の Perl コードを使用して、複雑なビルド シーケンスを処理できます。
主な欠点 (そして私のプロジェクトでそれを使用して申し訳ありませんが主な理由) はCons、make -j. 互いに依存しない多数のファイルをコンパイルする場合、 はConsそれらを一度に 1 つずつコンパイルしますが、同時にmake -jコンパイルします。これは、マシンに複数のコアとスレッドがある場合に最適です。
WAFは興味深い代替手段です。Python で書かれているため、ビルド ロジックをプレーンな Python で記述できます。並列ビルド + 半自動マジック シグネチャ ベースの依存関係追跡は、かなりうまく機能します。おそらくクロスプラットフォームです(つまり、Windowsでビルドする方法を知っています)が、私はそれを試していません。
学習曲線はかなり急ですが、プロセスを支援するための「The WAF book」も付属しています。
クロスプラットフォーム ビルド用の別の make はkmake(の一部でありkbuild、それ自体の言葉で: kBuild は、複雑なタスク用の単純な makefile を作成するための makefile フレームワークです。 ) です。GNU の拡張版ですmake。これは、VirtualBox の人々によって開発されています。彼らはこれを使用して、Windows、Linux、MacOS、および Solaris 用の VirtualBox 製品を構築しています。かなりポータブル!
詳細については、 http://svn.netlabs.org/kbuildを参照してください。