
рдкрд░рд┐рдЪрдп
CMake , C / C ++ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг, рд╕рдВрдХрд▓рди рдФрд░ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдПрдХ рдЦреБрд▓рд╛ рдФрд░ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реЗрдЯ рд╣реИред рдПрдХ рдмрд╛рд░ рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдХрд░ рдЬрд┐рд╕реЗ рд╣рд░ рдХреЛрдИ рд╕рдордЭрддрд╛ рд╣реИ, рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЙрд╕реА рдирд┐рд░реНрдорд╛рдг рдХреЛ рдХрд┐рд╕реА рднреА рдордВрдЪ рдкрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВрдЧреЗ рдЬрд╣рд╛рдВ рд╕реАрдПрдордХреЗ рдЙрдкрд▓рдмреНрдз рд╣реИред
CMake рднрд╛рд╖рд╛ , рдПрдХ рдореВрд▓ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдлрд╝рд╛рдЗрд▓ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрдХрдлрд╛рдЗрд▓ рдпрд╛ рдирд┐рдВрдЬрд╛) рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ, рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рдмрдВрдзрди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИред рдЖрдкрдХреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ, рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрдХреНрд╖ рдкрд░, рдХреЗрд╡рд▓ рдРрд╕реА рдЯреАрдо рд╣реИрдВ рдЬреЛ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдмрдирд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред рд╣рдо рдЙрдирдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред
рд╕реАрдПрдордХреЗ рд▓реЙрдиреНрдЪ
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реАрдореЗрдХ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЖрдкрдХреЛ рдЕрднреНрдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореМрдЬреВрджрд╛ рдЖрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдХреЗ рдФрд░ рдирдП рдЬреЛрдбрд╝рдХрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ CMake рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ ред
рдЖрджреЗрд╢реЛрдВ
CMake рдореЗрдВ рдХрдорд╛рдВрдб рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдорд╛рди рд╣реИрдВред рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрд╕рдХрд╛ рдирд╛рдо рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдХреЛрд╖реНрдардХреЛрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рддрд░реНрдХ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХрдВрд╕реЛрд▓ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП message
рдХрдорд╛рдВрдб рдореЗрдВ рдЫрд╣ рддрд░реНрдХ рджрд┐рдП рдЧрдП рд╣реИрдВ:
рдмрд╣рд╕
рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рддрд░реНрдХ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЕрдВрджрд░ рдХреЗ рдЪрд░ рд╕реЗ рдмрдЪрдиреЗ рдФрд░ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЕрдирдзрд┐рдХреГрдд рддрд░реНрдХ рдРрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рдЙрддреНрдкрд╛рджрди рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рд╡рд░реНрдг ()#"\
рдФрд░ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг:
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рддрд░реНрдХ Walk;around;the;forest
рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реВрдЪреА рдореЗрдВ рд╣реЛрдЧрд╛ Walk;around;the;forest
Walk around the forest
, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА рдЕрдкрд░рд┐рдЪрд┐рдд рддрд░реНрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдлреИрд▓ рдЬрд╛рддрд╛ рд╣реИ (рдмрд╢рд░реНрддреЗ рдХрд┐ рдореВрд▓ рддрд░реНрдХ рдХреЗ рдореВрд▓реНрдп рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдПрдХ рдбрдмрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ рдРрд╕рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ (рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рд╡рд░реНрдг рдХреЗрд╡рд▓ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ)ред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ
рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдкрд╛рдЙрдВрдб рдХреЗ рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдЙрд╕ рдкрдВрдХреНрддрд┐ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИрдВ рдЬрд╣рд╛рдВ рд╡реЗ рдореБрджреНрд░рд┐рдд рдХрд┐рдП рдЧрдП рдереЗред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд рдкрд╛рда рдХреЛ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдЪрд░
рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ set
рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ unset
рдХреЙрд▓ рдХрд░рдХреЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк ${VARIABLE}
рдирд┐рд░реНрдорд╛рдг рдХрд░рдХреЗ рдПрдХ рдЪрд░ рдХрд╛ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЪрд░ рдХреЛ рдЕрднреА рддрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХрд╣реАрдВ рдЗрд╕рдХрд╛ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ рдпрд╣ рдЪрд░ рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
рд╡рд┐рдХрд▓реНрдк
CMake рд╕реЗрдЯрд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рдЕрдзреАрди рд╣реИрдВред рд╡рд┐рдХрд▓реНрдк рдЪрд░ рдХреЗ рд╕рдорд╛рди рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ option
рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рддреАрди рддрд░реНрдХ рд╣реЛрддреЗ рд╣реИрдВ: рдЪрд░ рдХрд╛ рдирд╛рдо, рдЪрд░ рдХрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рд╡рд░рдг рдФрд░ рдЪрд░ рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди ( ON
рдпрд╛ OFF
):
рддрд╛рд░реНрдХрд┐рдХ рднрд╛рд╡
рд╕рд╢рд░реНрдд рдСрдкрд░реЗрдЯрд░реЛрдВ рдФрд░ рдЪрдХреНрд░реАрдп рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЗ рдЕрдзреНрдпрдпрди рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рддрд╛рд░реНрдХрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдХрд╛рдо рдХреЛ рд╕рдордЭрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рддрд╛рд░реНрдХрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╕рдордп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рджреЛ рдореЗрдВ рд╕реЗ рдПрдХ рдорд╛рди рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ: рд╕рд╣реА рдпрд╛ рдЧрд▓рддред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 52 <58 рдХреЗ рдмрд╛рдж рд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 52 LESS 58
рд╕рд╣реА рд╣реЛрдЧреАред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 88 EQUAL 88
рд╕рддреНрдп рд╣реЛрдЧреА, 63 GREATER 104
рдЧрд▓рдд рд╣реЛрдЧреАред рдЖрдк рди рдХреЗрд╡рд▓ рд╕рдВрдЦреНрдпрд╛ рдХреА рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рддрд╛рд░, рд╕рдВрд╕реНрдХрд░рдг, рдлрд╛рдЗрд▓реЗрдВ, рд╕реВрдЪреА рд╕рджрд╕реНрдпрддрд╛ рдФрд░ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддрд╛рд░реНрдХрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ ред
рд╕рд╢рд░реНрдд рдмрдпрд╛рди
CMake рдореЗрдВ рд╕рд╢рд░реНрдд рд╕рдВрдЪрд╛рд▓рдХ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреА рддрд░рд╣ рд╣реА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рд╕рд╢рд░реНрдд рдСрдкрд░реЗрдЯрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЬреЛ рдпрд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ 5> 1. рджреВрд╕рд░реА рдФрд░ рддреАрд╕рд░реА рд╕реНрдерд┐рддрд┐ рдЭреВрдареА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ 5 рдПрдХ рд╕реЗ рдХрдо рдпрд╛ рдЙрд╕рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред else
рдХрдорд╛рдВрдб рдХрдорд╛рдВрдб рдмреНрд▓реЙрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВ, рдФрд░ endif
рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдкрд┐рдЫрд▓реЗ рдЪреЗрдХ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред
рдЪрдХреНрд░
CMake рдореЗрдВ рд▓реВрдкреНрд╕ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд▓реВрдк рдХреЗ рд╕рдорд╛рди рд╣реИрдВред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, VARIABLE
рдЪрд░ рдХреЛ Airport
рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рддрдм рдЪрд╛рд░ рдиреЗрд╕реНрдЯреЗрдб рдХрдорд╛рдВрдб рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ VARIABLE
рдЪрд░ Airport
рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реЛрддрд╛ред рдЕрдВрддрд┐рдо рдЪреМрдерд╛ set(VARIABLE "Police station")
рдХрдорд╛рдВрдб set(VARIABLE "Police station")
рдореЗрдВ рдЪреЗрдХ рдХрд┐рдП рдЧрдП рдЪрд░ рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рджреВрд╕рд░реА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд▓реВрдк рддреБрд░рдВрдд рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред endwhile
рдЖрджреЗрд╢ рд▓реВрдк рдореЗрдВ рдиреЗрд╕реНрдЯреЗрдб рдХрдорд╛рдВрдб рдХреА рд╕реВрдЪреА рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред
рдпрд╣ рдЙрджрд╛рд╣рд░рдг foreach
рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдЗрд╕ рд▓реВрдк рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░, VARIABLE
рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рд╕реВрдЪреА рд╕реЗ рдирд┐рдореНрди рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ Give me the sugar please!
рдФрд░ рдлрд┐рд░ message(${VARIABLE})
рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ VARIABLE
рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЬрдм рд╕реВрдЪреА рдореЗрдВ рдХреЛрдИ рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд▓реВрдк рдЗрд╕рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИред endforeach
рдХрдорд╛рдВрдб рд▓реВрдк рдореЗрдВ рдиреЗрд╕реНрдЯреЗрдб рдХрдорд╛рдВрдб рдХреА рд╕реВрдЪреА рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред
foreach
рд▓рд┐рдЦрдиреЗ рдХреЗ 3 рдФрд░ рд░реВрдк рд╣реИрдВред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкрд╣рд▓рд╛ рдЪрдХреНрд░ рд╕реВрдЪреА рдХреЗ рд╕реНрдерд╛рди рдкрд░ 0 рд╕реЗ 10 рддрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдмрдирд╛рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдЪрдХреНрд░ 3 рд╕реЗ 15 рддрдХ рдХреА рд╕реАрдорд╛ рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рддреАрд╕рд░рд╛ рдЪрдХреНрд░ 50 рд╕реЗ 90 рддрдХ рдХреЗ рдЦрдВрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 10 рдХреЗ рдПрдХ рдЪрд░рдг рдХреЗ рд╕рд╛рдеред
рдХрд╛рд░реНрдп рдФрд░ рдореИрдХреНрд░реЛрдЬрд╝
CMake рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЖрджреЗрд╢реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ: рдкрд╣рд▓рд╛, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдПрдХ рдореИрдХреНрд░реЛ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдирдХреЗ рдЖрджреЗрд╢реЛрдВ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
function
рдХрдорд╛рдВрдб рднрд╡рд┐рд╖реНрдп рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдмрд╛рдХреА рддрд░реНрдХ рдЙрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдирд╛рдо рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рдорд╛рдиреНрдп рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рд╣рд░ рдЗрд╕рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлрд╝рдВрдХреНрд╢рди рдХреЗ рднреАрддрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдФрд░ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЕрдиреНрдп рд╕рднреА рдЪрд░ рдХреЗрд╡рд▓ рд╕реНрд╡рдпрдВ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред
рдореИрдХреНрд░реЛрдЬрд╝ рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рджрд╛рдпрд░рд╛ рдирд╣реАрдВ рд╣реИ: рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рдЕрдВрджрд░ рдХреЗ рд╕рднреА рдЪрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдорд╛рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдк рдореИрдХреНрд░реЛрдЬрд╝ рдФрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рд╕реАрдПрдордХреЗ рдореЗрдВ рдореИрдХреНрд░реЛрдЬрд╝ рд╕реА рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ: рдпрджрд┐ рдЖрдк рдореИрдХреНрд░реЛ рдмреЙрдбреА рдореЗрдВ return
рдХрдорд╛рдВрдб рдбрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди (рдпрд╛ рдкреВрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ) рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рдПрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, demonstrate_func
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд╛рд╕ рд╕рдВрджреЗрд╢ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реЛрдЧрд╛ The function was invoked!
, рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рдореИрдХреНрд░реЛ demonstrate_macro
рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд╕реНрдерд╛рди рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд demonstrate_macro
рдЬрд╛рдПрдЧрд╛ рдФрд░ рдирд┐рдХрд╛рд╕ рдЖрджреЗрд╢ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкрд╛рд░реНрд╕рд┐рдВрдЧ рддрд░реНрдХ
рдЬреИрд╕рд╛ рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рд╢рдХреНрддрд┐рд╢рд╛рд▓реА cmake_parse_arguments
рддрдВрддреНрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдореИрдХреНрд░реЛ рдХреЛ рджрд┐рдП рдЧрдП рдкрд╛рд░реНрд╕ рддрд░реНрдХреЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрд╣ рдХрдорд╛рдВрдб рдЪрд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЙрдкрд╕рд░реНрдЧ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ (рдЕрдЧрд▓рд╛ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рджреЗрдЦреЗрдВ), рдмрд╛рдж рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА, рдПрдХ рдореВрд▓реНрдп рдХреЗ рдмрд╛рдж рдХреАрд╡рд░реНрдб рдХреА рдПрдХ рд╕реВрдЪреА, рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реЗрдЯ рдХреЗ рдмрд╛рдж рдХреАрд╡рд░реНрдб рдХреА рдПрдХ рд╕реВрдЪреА рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреАред рдпрд╛ рдореИрдХреНрд░реЛред
рддрд░реНрдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рддрдВрддреНрд░ рдХрд╛ рдХрд╛рдо рдкреНрд░рд╛рдкреНрдд рддрд░реНрдХреЛрдВ рдХреЛ рдЪрд░ рдорд╛рдиреЛрдВ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдХрд▓реНрдк рдФрд░ рдХреАрд╡рд░реНрдб рдХреЗ рд▓рд┐рдП рдорд╛рдирд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХрдорд╛рдВрдб рдлреЙрд░реНрдо рдХреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ <Prefix>_<OptionOrKeyword>
, рдЬреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рди рдХреЛ <Prefix>_<OptionOrKeyword>
рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП, рдпреЗ рдмреВрд▓рд┐рдпрди рдорд╛рди рд╣реИрдВ (рд╕рддреНрдп - рд╡рд┐рдХрд▓реНрдк рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ; рдЕрдиреНрдпрдерд╛, рдЧрд▓рдд), рдФрд░ рдХреАрд╡рд░реНрдб рдХреЗ рд▓рд┐рдП, рдЙрдирдХреЗ рдмрд╛рдж рд╕реНрдерд┐рдд рд╕рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдореВрд▓реНрдпред
cmake_parse_arguments
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ cmake_parse_arguments
рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдХреБрдЫ рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ LOW NUMBER 30 COLORS red green blue
, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рд╕реНрдХреНрд░реАрди рдкрд░ рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
function(custom_function)
рд╕реНрдХреЛрдк
рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдЖрдкрдиреЗ рд╕реАрдЦрд╛ рдХрд┐ рд╕реАрдПрдордХреЗ рдореЗрдВ рдХреБрдЫ рдирд┐рд░реНрдорд╛рдг рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рджрд╛рдпрд░реЗ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рднреА рдЪрд░ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрди рддрдХ рдкрд╣реБрдВрдЪ рд╣рд░ рдЬрдЧрд╣ рд╣реИ), рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдЬреЛ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдФрд░ рдкреБрди: рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рдХреИрд╢ рдЪрд░ рднреА рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЕрдкрдирд╛ рджрд╛рдпрд░рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЪрд░ рдХреЛ set(VARIABLE ... PARENT_SCOPE)
рдХрдорд╛рдВрдб set(VARIABLE ... PARENT_SCOPE)
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ "рдореВрд▓" рджрд╛рдпрд░реЗ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:
рдпрджрд┐ PARENT_SCOPE
VARIABLE
рд╡реИрд░рд┐рдПрдмрд▓ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ PARENT_SCOPE
рд╣реИ, рддреЛ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗрд╡рд▓ PARENT_SCOPE
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рд╣реЛрдЧрд╛, рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдХреЛрдк рдореЗрдВ рдпрд╣ рдПрдХ рдЦрд╛рд▓реА рдорд╛рди рд▓реЗрдЧрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдпрд╣ CMake рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛ рд▓реЗрдЦ рд▓рдЧрднрдЧ рдПрдХ рджреЛ рджрд┐рдиреЛрдВ рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕реАрдПрдордХреЗ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреЗрд╢ рдХрд░реЗрдЧрд╛ред рдЬрд▓реНрдж рдорд┐рд▓рддреЗ рд╣реИрдВ!