2015-12-15 10 views
5

サブディレクトリ内からCMake環境全体に値を設定するには、set(VARIABLE_NAME Value CACHE INTERNAL "")構文を使用してキャッシュ変数を設定するか、set_property(GLOBAL PROPERTY VARIABLE_NAME Value)構文を使用してグローバルプロパティを設定します(CMakeの変数についてはthis very good answerも参照してください)。CMakeキャッシュ変数とグローバルプロパティ:変数値を使用する簡単な構文

後者を使用すると、CMakeキャッシュが設計されていないものに対して「汚染」していないこと、およびFORCEパラメータを使用しないときに削除されるキャッシュに依存していないという利点があります。

しかし、${...}の表記を単に使用するのではなく、get_propertyを使用して値を取得する必要があるため、変数値を使用する構文は使いやすいものではありません。

get_property(構文砂糖のようなもの)の代わりに使用する構文が簡単ですか?

+1

'' CMakeキャッシュを何かのために汚染する '' - CMakeキャッシュ**は(他のキャッシュの中で)内部キャッシュ変数用に設計されています**。 'FORCEパラメータを使用していないときに削除されるキャッシュに依存しない' - 'INTERNAL' **は** FORCE'を意味します。ですから、 'CACHE INTERNAL'変数をグローバル変数として使うことは完全にOKです。これはお勧めです。 – Tsyvarev

+0

@Tsyvarev 'INTERNAL'キャッシュ変数型ヒントをありがとう。 [私の答え](http://stackoverflow.com/questions/31037882/whats-the-cmake-syntax-to-set-and-use-variables/31044116#31044116)は不明で、私はそれに応じてそれを更新しました。私が 'GLOBAL'プロパティを好む主要な理由は、テストを簡単にしていることです(最初の実行とすべての連続する実行の間に違いはありません)。 – Florian

+0

@Roland Sarrazinグローバルプロパティの値を取得する必要がある場合の例を挙げることができますか?変数のようなプロパティに直接アクセスすることはできませんが、 'set_property(GLOBAL APPEND PROPERTY ...) '構文を取得、追加、および設定するのではなく、リストプロパティに追加するような簡単な方法があります)。 – Florian

答えて

2

コメントを要約しましょう。

私の実際の質問には:get_propertyを使用する具体的なショートカットはありません。

便利コメント:

  • CACHE INTERNALとしては、変数がグローバルにアクセスできるようにキャッシュされた変数を使用しても大丈夫ですFORCE意味します。
  • 内部キャッシュ変数を明示的にクリーニング/設定してCMakeファイルを開始し、繰り返し実行すると予期しない動作が起こらないようにすることをお勧めします。
関連する問題