2017-01-17 7 views
3

別のCMakeLists.txtファイルを実行中にCMake変数を一時的に変更する方法はありますか?このようなもの?cmake変数をプッシュ/ポップ

SET (SOME_VARIABLE_TMP "${SOME_VARIABLE}") 
SET (SOME_VARIABLE "temporary value") 
ADD_SUBDIRECTORY("subdir") 
SET (SOME_VARIABLE "${SOME_VARIABLE_TMP}) 

そして私は、私も、それを(未テスト)このような何かを自分自身を行うには、いくつかのハックの関数を作ることができると思います:

PUSH (SOME_VARIABLE) 
SET (SOME_VARIABLE "temporary value") 
ADD_SUBDIRECTORY("subdir") 
POP (SOME_VARIABLE) 

私はあなたがこのようにそれを行うことができます知っている

FUNCTION (PUSH VARNAME) 
    SET (${VARNAME}_TMP "${${VARNAME}}" PARENT_SCOPE) 
ENDFUNCTION() 

FUNCTION (POP VARNAME) 
    SET (${VARNAME} "${${VARNAME}_TMP}" PARENT_SCOPE) 
ENDFUNCTION() 

あなたはそれを拡張することもできますので、プッシュプッシュポップポップを行うと機能します。しかし、私はがネイティブにそれを行うための良い方法を知りたいです

答えて

4

いいえ、それをネイティブに行うには良い方法はありません。

ADD_SUBDIRECTORY()とすべての変数の変更をFUNCTION()に移動するだけで済みます。それはあなた自身の可変範囲を与えるでしょう:

FUNCTION(ADD_MY_SUBDIR) 
    SET (SOME_VARIABLE "temporary value") 
    ADD_SUBDIRECTORY("subdir") 
ENDFUNCTION() 
関連する問題