0

CMake を使用して、クロス プラットフォーム/クロス コンパイラ ソリューションを構築する予定です。次のようなツリーを想像してください。

事業
  |__含める
  |__src
  |__buildrules

ディレクトリ buildrules には、私の CMake 拡張機能と共通のサブプロジェクト オプションに加えて、さまざまなプラットフォーム (.sh .bat ファイル) でビルドを開始するためのいくつかのスクリプトが含まれます。同じソース ツリーを使用して、異なるコンパイラ/構成を使用してビルドするつもりです。したがって、NT では、開発用の VS プロジェクト ファイルと、コマンド ライン バッチ ビルド用の NMake メイクファイルを作成できる必要があります。Linux では、同じツリーを使用して、32/64 バリアントで異なるコンパイラ (gcc、clang、icc) を使用してビルドできます。したがって、buildrules は CMake キャッシュのディレクトリではありません。構成/ジェネレーターごとに異なる名前 (構成/ジェネレーターに固有の名前) の異なるビルド ディレクトリが必要です。

現在、ほとんどすべての CMake チュートリアルは、「ビルド サブディレクトリを作成し、cmake を実行し、make を実行する」といった内容から始まります。これは私にはむしろ望ましくないようです。「シングルクリック」で実行できるように、完全に自動化されたビルドシステムが必要です。buildrules (たとえば、ショートカット バッチ ファイルの 1 つ) からいくつかのコマンドを実行できるようにしたいのですが、プロジェクト ルートの下に適切な名前のビルド ディレクトリを作成し (まだ存在しない場合)、そのディレクトリで cmake を実行してキャッシュを生成します (以前に行われていなかった場合)、正しいツールを呼び出してビルドを開始します。UNIX では make を呼び出し、Windows コマンド ラインでは nmake を呼び出し、VC ソリューションではツールを開始するか、バッチ ビルドを呼び出します。

最も重要なことは、これらすべてを cmake 自体で実行したいということです。さまざまなプラットフォーム固有のツールを使用して、さらに別の移植性レベルを作成したくありません。私が許容できる唯一のプラットフォーム固有のものは、cmake cmake.exe の違いです。

それで、あなたはこれができると思いますか?

誰かがこのセットアップで私を助けてくれれば、本当に感謝しています。

ありがとうございました。

4

1 に答える 1

0

ツール cmake.exe 自体は、クロスプラットフォーム固有のソリューション/メイク ファイルを生成するためだけのものです。ctest.exe を使用して、(1) cmake configure ステップ、(2) ビルドの実行、(3) 単体テストの実行、(4) cdashへの結果の送信をスケジュールします。

このページによると、cmakeスクリプトからctestを構成することは可能のようですが、私はそれを自分で試したことはありません。これらの 5 つの ctest コマンドを相互に呼び出す単一のバッチ ファイルを使用したソリューションがありました。

ctest.exe -D NightlyStart -C Release
ctest.exe -D NightlyConfigure -C Release
ctest.exe -D NightlyBuild -C Release
ctest.exe -D NightlyTest -C Release
ctest.exe -D NightlySubmit -C Release

これがあなたの質問に完全に答えているわけではないことはわかっていますが、方向性を示してくれることを願っています.

于 2013-06-13T08:29:05.433 に答える