web-dev-qa-db-ja.com

CMakeサブプロジェクトの上書きオプション

ソースを変更したくないサードパーティプロジェクトのCMakeLists.txtを再利用しようとしています(正確には、 expat )。 add_subdirectoryを使用して、プロジェクトを最上位のサブプロジェクトとして追加しました。

これは機能しますが、サブプロジェクトのいくつかのoptionsの値をトップレベルCMakeLists.txtに設定したいと思います。どうすればよいですか?

22
thehouse

同様の質問 を参照してください。

簡単に言えば:

SET(SOME_EXPAT_OPTION OFF CACHE BOOL "Use some expat option")
32
ronkot

サブプロジェクトが構成設定にoptionsetではない)を使用する場合、サブディレクトリを追加する前にoptionを使用して値を指定できます。

option(LIB_OPTION1 "" OFF)
option(LIB_OPTION2 "" ON)
add_subdirectory(${CMAKE_SOURCE_DIRECTORY}/lib)
25
Drew Noakes

ADD_SUBDIRECTORYを呼び出す前に、必要な設定(ONまたはOFF)でオプションを定義できます。 OPTIONへの最後のパラメータはdefault値のみであるため、これはexpatのCMakeLists.txtOPTIONコマンドよりも優先されます(これは無視されます)設定はすでに存在します)。

4
Johannes S.