CMake manual for set_directory_properties
請求:Directoryのプロパティとサブディレクトリ
現在のディレクトリとサブディレクトリのプロパティを設定します。
私にとって、これは、親ディレクトリに設定されたプロパティもすべてのサブディレクトリに継承されるべきであることを示しています。しかし、これはそうではないようです。考えてみましょう:
CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
project(foo CXX)
set_property(DIRECTORY . PROPERTY narf "zort")
add_subdirectory(a)
get_property(res DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY narf)
message("Property read from root: " ${res})
a/CMakeLists.txt
get_property(res DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY narf)
message("Property for a read from a: " ${res})
get_property(res DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY narf)
message("Property for root directory root read from a: " ${res})
この版画:
Property for a read from a:
Property for root directory root read from a: zort
Property read from root: zort
だからプロパティはRのみ可能それが設定されたディレクトリから取得され、サブディレクトリではありません。プロパティを処理するのに
set_directory_properties
/
get_directory_properties
を使用する場合も同様です。
set_directory_properties
マニュアルのそれぞれのセクションを誤って解釈しましたか?それとも単に古い/間違っていますか?
私がCMakeのソースコードを見ると、これは 'cmPropertyDefinition'の' chained'メンバーが 'true'に依存しています。だから私はあなたが外側からこれを設定できるかどうかチェックしていないが、 'define_property(DIRECTORY PROPERTY narf INHERITED BRIEF_DOCS" "FULL_DOCS" ")'を呼び出そうとしましたか?おそらく 'INHERITED'キーワードはトリックを行います(INHERITEDドキュメンテーションがそれが他のものに使われていると言っても)。 – Florian
@Florianうわー、そうですよ!私はそれを決して推測していないだろう。 INHERITEDドキュメントは、同じタイプの親スコープではなく、連鎖スコープタイプのみを参照します。これを答えにする必要があります、それは重要です。 – utopia