引数がオプションのマクロを作成します。指定しない場合、引数の値は空の文字列でなければなりません。これどうやってするの?ご協力いただきありがとうございます。オプションの引数cmakeマクロ
16
A
答えて
12
0
これは、引数が指定されていない場合、CMakeはマクロに必要なパラメータの数をチェックしないため、デフォルトで発生します。
29
マクロ定義で指定された引数は、発信者に必要です。ただし、マクロ定義で明示的に指定されていない限り、引き続きオプションの引数を受け入れることができます。
つまり、発信者は、余分な引数(マクロの引数リストに指定されていない)を渡すことができます。あなたのマクロは、${ARGN}
変数をチェックすることによって、余分な引数の存在を確認できます。
注意:ARGN
は "普通の" cmake変数ではありません。今cmakeのが少なすぎる変数が渡されたかどうかを確認するように見えるん
macro (mymacro required_arg1 required_arg2)
# Cannot use ARGN directly with list() command,
# so copy it to a variable first.
set (extra_macro_args ${ARGN})
# Did we get any optional args?
list(LENGTH extra_macro_args num_extra_args)
if (${num_extra_args} GREATER 0)
list(GET extra_macro_args 0 optional_arg)
message ("Got an optional arg: ${optional_arg}")
endif()
endmacro (mymacro)
関連する問題
- 1. -DXXXコンパイラ引数へのCMAKEオプション
- 2. 関数にオプションのマクロ引数を渡す方法
- 3. cmakeのQT5 Linguistマクロ
- 4. マクロにオプションの引数を追加する
- 5. My Excel 2007マクロ - 引数はオプションではありません。
- 6. マクロ(文字)の引数
- 7. gnuplotの引数付きマクロ
- 8. cmakeのオプションのテスト
- 9. 各位置引数のオプションの引数
- 10. コールバック引数の前のオプション引数
- 11. LaTeXオプションの引数
- 12. オプションのコマンドライン引数
- 13. subprocess.Popenオプションの引数
- 14. クラス関数のオプション引数
- 15. マクロ関数へのマクロ引数の受け渡し
- 16. マクロ関数の引数に基づいたマクロの出力タイプ
- 17. 変数名の真中のマクロ引数?
- 18. 構文-quoteマクロ引数?
- 19. 関数のようなマクロが、引数
- 20. CMAKE文字列オプション
- 21. CMakeのビルドツールモードで引数を渡す
- 22. C++オプション/デフォルト引数
- 23. C++可変引数関数の可変引数マクロ
- 24. 可変個引数マクロ「)」数値定数
- 25. phpDocumentorのオプションの引数
- 26. shスクリプトのオプションの引数
- 27. ルビのオプションの引数/ param
- 28. PHPのオプション引数のテスト
- 29. マクロ内でのC++の追加引数引数
- 30. 関数に渡されるすべての引数(対のみ$オプションの引数)のみのオプションの引数
:
list()
コマンドでそれを使用するには、まず、通常の変数にコピーする必要があります。この回答は今や間違っているか、少なくとも私のcmakeにあります2.8.8 – Samあなたのマクロは、マクロ定義に名前が付けられていない限り、引き続きオプションの "引数"を持つことができます。つまり、呼び出し元は、マクロの引数リストに指定されていない余分な引数を渡すことができます。あなたのマクロは '$ {ARGN}'を使って余分な引数をチェックできます。注意:ARGNは "普通の" cmake変数ではありません。 list()コマンドで使用するには、最初に通常の変数、 'set(extra_macro_args $ {ARGN})'にコピーする必要があります。次に 'list(LENGTH extra_macro_args num_extra_args)'の後に 'if($ {num_extra_args} GREATER 0)yadayadayada'のようなことをすることができます –