2011-10-19 11 views
3

Maven is said toは、Convention over Configurationの形式を採用しています。cmakeは設定よりも規則を使用していますか?

間違った比較をしたくないのですが、理解できる限り、cmakeは、Javaプロジェクトのmaven canと同様に、C++プロジェクトの同様のロールを埋め込むことができます。

したがって、になりますか?設定にはいくつかの規則がありますか、またはそれぞれのプロジェクトは一意に構成されていますか?

+0

私はMavenを知っている人の観点から実際にあなたの質問に答えました。 – TechZilla

答えて

1

3、私はまた、コンフィギュレーションモデルよりも優れたコンベンションを探しました。 ...

私もCMAKEをチェックしました。スケルトンを作成した後、いくつかのものが目立っていました。

  1. CMAKEは時には宣言的であり、時には手続き的であり、あなたは常に醜いミックスに終わることがあります。 AKA、カッコのないCのANTです。

  2. CMAKE自体は移植性があります。あなたのプロジェクトでは、プラットフォームの詳細が処理される必要があり、事前にそれらを知っておくことをお勧めします。 CMAKEモジュールは、おそらくこれを助けるために存在していますが、残念なことに再利用性は、不可能な役割の約束に近いように見えます...理論的には可能ですが、実際には、それらが必要とするすべての複雑さを体系化するためのまともな方法として終わります。

つまり、CMAKEはMavenのような形や形ではありません。これは、より低いレベルのANTに似ています。これは、 "クロスプラットフォーム" DSLを使用してプラットフォーム固有のメイクファイルを生成することを可能にします。

3

ビルドディレクトリにすべてのビルド製品が含まれている "アウトソース"ビルドを実行することを強く推奨している1つの慣習は、完全に独立しています(ファイルレイアウト、テストレイアウト、ビルド出力など)。ソースツリー、通常、ソースおよびビルドが兄弟である:

projects 
    proj1-build-x86 
    proj1-build-x64 
    proj1-src 

以降に変更されたものを言うのは簡単ですので、私たちは常に、されている(1)ビルド製品のクリーンなソースツリーを維持するために、この戦略をお勧めします2つの主要な理由あなたのバージョン管理システムからの最新の更新と(2)与えられたソースツリーに対して複数のビルドツリーを持ち、ビルドプロダクトや設定を気にせずに他のビルドツリーを妨害しないようにします。

私が最近気付いたのは、私が作業していたプロジェクトが、誤ってソースツリーにいくつかのpythonファイルを生成していたことに気付きました。しかし、私はx86とx64ビルドを異なるビルドツリーで同時にビルドしようとしたときに気がつきました。突然、生成されたpythonファイルにはいくつかの行が重複して混在していました。それをビルドツリーに生成するように変更し、すべてが順調でした。

これはしかし、CMakeの良い練習のすべてのほんの一部である、と強くこれらのプロジェクトを実行しているスマートな人々の常識や規律以外によって強制されていない...のMavenの優雅さを経験した後

+3

それは本当に大会ですが、 "大会規約"とは何が関係していますか? Cmakeはこのタイプのプロジェクト構造を自動的に検出して、ソース外のビルドに対して自動的に設定しますか、または明示的に設定する必要がありますか? – QuidNovi

関連する問題