1. 程式人生 > >Make命令之function

Make命令之function

定義一個可在CMake指令碼其他位置呼叫的函式。

function(<name>[arg1 [arg2 [arg3 ...]]])     COMMAND1(ARGS ...)     COMMAND2(ARGS ...)     ...

endfunction(<name>)

定義一個函式名為<name>,引數名為arg1 arg2 arg3(…)。 函式體內的命令直到函式被呼叫的時候才會去執行。其中ARGC變量表示傳遞給函式的引數個數。 ARGV0, ARGV1, ARGV2代表傳遞給函式的實際引數。 ARGN代表超出最後一個預期引數的引數列表,例如,函式原型宣告時,只接受一個引數,那麼呼叫函式時傳遞給函式的引數列表中,從第二個引數(如果有的話)開始就會儲存到ARGN。

測試例項:

cmake_minimum_required(VERSION 2.8)




project(ArgumentExpansion)




function (argument_tester arg)

message(STATUS "ARGN: ${ARGN}")

message(STATUS "ARGC: ${ARGC}")

message(STATUS "ARGV: ${ARGV}")

message(STATUS "ARGV0: ${ARGV0}")


list(LENGTH ARGV argv_len)

message(STATUS "length of ARGV: ${argv_len}")

set(i 0)

while( i LESS ${argv_len})

list(GET ARGV ${i} argv_value)

message(STATUS "argv${i}: ${argv_value}")


math(EXPR i "${i} + 1")

endwhile()



endfunction ()




argument_tester(arg0 arg1 arg2 arg3)

執行結果:

-- ARGN: arg1;arg2;arg3 -- ARGC: 4 -- ARGV: arg0;arg1;arg2;arg3 -- ARGV0: arg0 -- ARGV1: arg1 -- length of ARGV: 4 -- argv0: arg0 -- argv1: arg1 -- argv2: arg2 -- argv3: arg3