5

キャッシュ変数の場合、変数の代わりにリストを使用することは可能ですか?

ここでキャッシュ変数を使用する方法

set(VAR "Value" CACHE INTERNAL "My Var")
set(VAR "${VAR} Value2" CACHE INTERNAL "My Var")
4

1 に答える 1

5

CMake リストはセミコロンで区切られているため、次setのようにリストを直接指定できます。

set(VAR Value;Value2 CACHE INTERNAL "My Var")

とはいえ、リストはセミコロンで区切られた項目として保持されますがset、各項目の間にスペースを使用して構成できます。例えば

set(MyList Value Value2)  # list is  Value;Value2

したがって、値にスペースが含まれている場合は、リストを引用符で囲む必要があります"

set(VAR "Value 1;Value 2" CACHE INTERNAL "My Var")  # list is  Value 1;Value 2

最後のポイントは、すでにリストが作成されている場合は、キャッシュするときにリスト変数を引用符で囲む必要がないということです。

set(MyList "Value 1;Value 2")  # list is  Value 1;Value 2
set(VAR ${MyList} CACHE INTERNAL "My Var")  # no quotes required

編集:

私が理解しているように、list(APPEND...)コマンドを使用して値を直接キャッシュできるかどうかを尋ねています。

答えはノーですが、あなたの試みはほぼ正しかったです。目的の効果を得るには、リストをキャッシュするときにスペースではなくセミコロンを使用する必要があります。

set(VAR "${VAR};Value2" CACHE INTERNAL "My Var")
于 2013-05-25T22:33:13.417 に答える