ここでcmake と変数の受け渡しについて質問しました。私はそれを機能させることができますが、関数を呼び出す親スコープの変数とは異なる名前を関数に付けた場合にのみです。つまり、本質的に:
function(strange name)
message(STATUS ${name})
message(STATUS ${${name}})
endfunction()
set(name foo)
set(anothername foo)
strange(name)
strange(anothername)
結果は次のとおりです。
-- name (message(STATUS ${name}) for var "name")
-- name (message(STATUS ${${name}}) for var "name")
-- anothername message(STATUS ${name}) for var "anothername")
-- foo (message(STATUS ${${name}}) for var "anothername")
ちょっと変じゃない?何が起こっていますか?関数の動作は、親スコープ内の変数の命名に依存すべきではないと思います-そうすべきですか?!
説明をいただければ幸いです。