35

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

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

4

4 に答える 4

43

良い答えで同様の質問を参照してください。

簡単に答えてください:

SET(SOME_EXPAT_OPTION OFF CACHE BOOL "Use some expat option")
于 2012-12-28T14:27:08.407 に答える
39

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

option(LIB_OPTION1 "" OFF)
option(LIB_OPTION2 "" ON)
add_subdirectory(${CMAKE_SOURCE_DIRECTORY}/lib)
于 2014-12-08T14:31:11.550 に答える
5

を呼び出す前に、目的の設定 (オンまたはオフ) でオプションを定義できますADD_SUBDIRECTORY。最後のパラメータ toはデフォルトOPTION値にすぎないため、これは expat のコマンドよりも優先されます (その設定が既に存在する場合は無視されます)。CMakeLists.txtOPTION

于 2012-12-28T09:29:22.963 に答える
-2

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を参照してください)

于 2012-12-28T09:35:40.520 に答える