cmake
関数とマクロ
サーチ…
備考
マクロと関数の主な違いは、 マクロは現在のコンテキスト内で評価され、 関数は現在のコンテキスト内で新しいスコープを開きます。したがって、 関数内で定義された変数は、関数が評価された後では認識されません。逆に、 マクロ内の変数は、マクロが評価された後も依然として定義されています。
入力に基づいて変数を定義する単純なマクロ
macro(set_my_variable _INPUT)
if("${_INPUT}" STREQUAL "Foo")
set(my_output_variable "foo")
else()
set(my_output_variable "bar")
endif()
endmacro(set_my_variable)
マクロを使用します。
set_my_variable("Foo")
message(STATUS ${my_output_variable})
印刷する
-- foo
while
set_my_variable("something else")
message(STATUS ${my_output_variable})
印刷する
-- bar
与えられた名前の変数を埋めるためのマクロ
macro(set_custom_variable _OUT_VAR)
set(${_OUT_VAR} "Foo")
endmacro(set_custom_variable)
それと一緒に使う
set_custom_variable(my_foo)
message(STATUS ${my_foo})
それは印刷されます
-- Foo
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow