引数がオプションのマクロを作成したいです。指定されていない場合、引数の値は空の文字列になります。どうすればいいでしょうか?
ベストアンサー1
議論マクロ定義で指定された呼び出し元には必須です。ただし、マクロ定義で明示的に指定されていない限り、マクロはオプションの引数を受け入れることができます。
つまり、発信者は余分な引数(マクロの引数リストに指定されていないもの)。マクロは、変数をチェックすることで、このような追加の引数の存在を確認できます${ARGN}
。
注意:ARGN
は「通常の」cmake 変数ではありません。コマンドで使用するにはlist()
、まず通常の変数にコピーする必要があります。
macro (mymacro required_arg1 required_arg2)
# Cannot use ARGN directly with list() command,
# so copy it to a variable first.
set (extra_args ${ARGN})
# Did we get any optional args?
list(LENGTH extra_args extra_count)
if (${extra_count} GREATER 0)
list(GET extra_args 0 optional_arg)
message ("Got an optional arg: ${optional_arg}")
endif ()
endmacro (mymacro)