CMakeLists.txt
ソースを変更したくないサードパーティ プロジェクト (正確にはexpat )を再利用しようとしています。を使用して、プロジェクトを最上位のサブプロジェクトとして追加しましたadd_subdirectory
。
option
これは機能しますが、サブプロジェクトのいくつかの値をトップレベルに設定したいと思いますCMakeLists.txt
。どうすればいいですか?
サブプロジェクトがその構成設定にoption
(not ) を使用する場合、サブディレクトリを追加する前に を使用して値を指定できます。set
option
option(LIB_OPTION1 "" OFF)
option(LIB_OPTION2 "" ON)
add_subdirectory(${CMAKE_SOURCE_DIRECTORY}/lib)
を呼び出す前に、目的の設定 (オンまたはオフ) でオプションを定義できますADD_SUBDIRECTORY
。最後のパラメータ toはデフォルトOPTION
値にすぎないため、これは expat のコマンドよりも優先されます (その設定が既に存在する場合は無視されます)。CMakeLists.txt
OPTION
SETコマンドには「PARENT_SCOPE」オプションがあります。
If PARENT_SCOPE is present, the variable will be set in the scope above the current
scope. Each new directory or function creates a new scope. This command will set the
value of a variable into the parent directory or calling function (whichever is
applicable to the case at hand). PARENT_SCOPE cannot be combined with CACHE.
(http://www.cmake.org/cmake/help/v2.8.10/cmake.html#command:setを参照してください)