CMake で現在のスコープに親があるかどうかを検出するにはどうすればよいでしょうか? 質問する

CMake で現在のスコープに親があるかどうかを検出するにはどうすればよいでしょうか? 質問する

現在のスコープに親があるかどうかを検出する方法はありますか?

スタンドアロン プロジェクトまたは別のプロジェクトのサブ プロジェクトになることができるプロジェクトがあります。サブ プロジェクト ケースを可能にするために、set() に PARENT_SCOPE フラグを使用して、親にプッシュします。ただし、スタンドアロン プロジェクトとしてビルドすると、「現在のスコープには親がありません」という警告が表示されます。親があるかどうかを検出し、set() 呼び出しを if ステートメントで囲むことで、このエラーを回避したいと思います。または、親がある場合にのみ親スコープで変数を設定する別の方法はありますか?

ベストアンサー1

最も強力なアプローチは、PARENT_DIRECTORYディレクトリプロパティ。

projectこれは、コマンドの前に呼び出されたか後に呼び出されたかに関係なく、また親と子の両方が同じプロジェクト名を持っているかどうかに関係なく、正しい回答を生成します。

get_directory_property(hasParent PARENT_DIRECTORY)
if(hasParent)
  message(STATUS "Has a parent scope.")
else()
  message(STATUS "Doesn't have a parent scope.")
endif()

おすすめ記事