func
という名前の引数を取るCMake関数、たとえばNAMED1
とNAMED2
があるとしましょう。最初の引数は必須で、2番目の引数はオプションです。例えばリストをcmake関数の引数に変換します
func(NAMED1 foo NAMED2 optional)
は、今私は、各反復でこの関数func
を呼び出す必要があるループを持っていますが、現在の反復に応じて、私は時々、オプションの値を供給し、時にはないようにする必要があります。だから私は、引数のリストを作成し、各反復で、だから私は今args
リストを持っている
list(APPEND args "NAMED1" "foo")
if (...something...)
list(APPEND args "NAMED2" "optional")
endif()
を言います。文字列として、それは
NAMED1;foo
のように見える場合もあれば、だから私は
string(REPLACE ";" " " args "${args}")
でリスト全体を置き換える文字列に思っ次いで、得られたargs
が見えるでしょう
NAMED1;foo;NAMED2;optional
のように見えるかもしれませんlike
NAMED1 foo NAMED2 optional
だから私は
func("${args}")
で、機能func
にこの文字列を渡すと考えしかし、それは別の文字列としてそれを解釈する必要がありながら、問題は今、cmakeのは、これは一つの大きな文字列であると考えていることです。どうすればこれを達成できますか?
ちょうど 'FUNC($ {}引数)'引用符と '交換を必要とせず、'動作するはずです。私は過去にこれを何度も使ってきました。 [こちら](http://stackoverflow.com/questions/35847655/cmake-when-to-quote-variables)も参照してください。 – Florian
うわー!あなたが正しい。それを回答として投稿し、私はそれを受け入れるでしょう。 – rwols