3

簡単な説明:
すべてのサブモジュールに含まれる CMake に custom_target を追加できるかどうか知っている人はいますか? 例として、Install/Run_Tests/Package ターゲットがビルド内のすべてのサブモジュールに追加される方法が挙げられます。

詳細:
私のシナリオは、次のようなディレクトリ構造の場合です。

計画
  --CMakeLists.txt
  -- サブモッド A
      --CMakeListsA.txt
  -- サブモッド B
      --CMakeListsB.txt

doxygen 生成用の custom_target を最上位の CMakeLists.txt ファイルに追加し、それをサブ モジュール A と B に含めたいと思います。コマンドはすべてのモジュールでまったく同じになります。

各サブモジュールの cmake ファイルに custom_target を追加できますが、これは間違っているようです。これに関するもう 1 つの問題は、CMake に Visual Studio ソリューションを生成させると、既に存在する "doc" プロジェクトと競合することです (最上位のソリューションを開く場合)。ただし、CMake が提供するターゲットは、2 回含まれないほどスマートです。

4

1 に答える 1

2

あなたができる最善のことはadd_custom_target、トップレベルの CMakeLists.txt で定義された関数にラップし、それを各 CMakeLists.txt で使用することだと思います。

ターゲット名が繰り返される問題を回避するには、関数を次のように定義できます。

function(AddDoxygenTarget)
  add_custom_target(Doxygen${PROJECT_NAME} ...)
endfunction()

これは、コマンドを持つ各サブモジュールの CMakeLists.txt に依存しますproject。そうでない場合は、各サブディレクトリの名前を使用できます。

  get_filename_component(SubDirName ${CMAKE_CURRENT_LIST_DIR} NAME)
  add_custom_target(Doxygen${SubDirName} ...)
于 2012-07-17T19:20:50.163 に答える