cmakeマクロのオプション引数 質問する

cmakeマクロのオプション引数 質問する

引数がオプションのマクロを作成したいです。指定されていない場合、引数の値は空の文字列になります。どうすればいいでしょうか?

ベストアンサー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)

おすすめ記事