Make命令之function
阿新 • • 發佈:2018-12-09
定義一個可在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