7

私は CMake を学んでいますが、そのマルチステップ ワークフローを理解するのに問題があります。これまでのところ、あなたは次のように理解しています。

  • 書くCMakeLists.txt
  • サブディレクトリから実行cmakeして、ビルド ファイル (私の場合は Makefile) を生成します。
  • 走るmake

ただし、さまざまなターゲット (リリースとデバッグ) をどのように処理する必要があるのか​​ わかりません。2 つの異なるサブディレクトリで CMake を実行しますか?

また、編集する理由がわかりませんCMakeCache.txt(そのための GUI ツールもあります)。./configureさまざまなオプションを渡して達成することをエミュレートするには?

4

2 に答える 2

8

あなたはそれをかなり正しく理解しました。> write CMakeLists.txt>シーケンスは正しいですcmakemake

さまざまな構成 (デバッグとリリース) に関しては、マルチ構成ジェネレーター (Visual Studio、XCode) と単一構成ジェネレーター (その他すべて) を区別する必要があります。マルチ構成ジェネレーターを使用すると、すべての構成を含む 1 つのビルドシステム (ソリューション ファイルなど) を生成し、ビルド時にそれらの選択が行われます。

単一構成ジェネレーターを使用すると、異なるビルドシステムを生成することによって、つまり、異なるディレクトリで CMake を複数回実行することによって (およびCMAKE_BUILD_TYPECMake 変数の異なる値を使用して)、異なる構成が取得されます。

したがって、次のようにします。

> cd my_project/bld/debug
> cmake ../../src -DCMAKE_BUILD_TYPE=Debug
> cd ../release
> cmake ../../src -DCMAKE_BUILD_TYPE=Release

キャッシュの編集について (通常は CMake GUI または を使用ccmake): 繰り返しますが、これは主に./configureAutoMake の世界からオプションを渡すことに対応しています。これは、新しくダウンロードされたプロジェクト (CMake GUI を使用) の典型的なワークフローです。

  1. CMake GUI を実行し、必要なソース ディレクトリ (入力) とバイナリ ディレクトリ (出力) を指定します。
  2. 構成、設定。これにより、キャッシュがプロジェクト指定のデフォルトで埋められます。CMake がプロジェクトのいくつかの依存関係を自動的に見つけられない場合、これはエラーで終了します。
  3. キャッシュを調べ、気に入らない値 (コンパイル オプションなど) を変更し、不足しているオプション (CMake が見つけられなかったライブラリへのパスなど) を埋めます。
  4. プロジェクトのセットアップに満足するまで、手順 2 と 3 を繰り返します。
  5. ビルドシステムを生成します。
  6. CMake GUI を終了し、適切なビルドツールを使用してビルドします。
于 2015-07-03T15:25:45.343 に答える