《5》cmake的函數(shù)
函數(shù)格式:
function(函數(shù)名 參數(shù)1 參數(shù)2 參數(shù)3 ...)
? 命令1(參數(shù)1)?????????? # cmake中內(nèi)置的命令,或其他邏輯.
? 命令2(參數(shù)2)
? ......
endfunction(函數(shù)名)? # 這里的函數(shù)名是選填的,可以為空.

如輸出 Hello world
function(test? data1 data2)
? message("${data1} ${data2}")
endfunction()
test(Hello world)?? # 調(diào)用函數(shù),輸出Hello world

為了簡單驗(yàn)證,直接在文件夾中創(chuàng)建一個CMakeLists.txt文件,
然后輸入下面代碼:

然后再ubuntu的命令行中輸入:
cmake ./
運(yùn)行代碼:


return命令
用于打斷函數(shù)進(jìn)行返回.(需要注意的是,與C語言不同return()并不能進(jìn)行參數(shù)的返回)
return()

可變參數(shù)
cmake中函數(shù)是可變參函數(shù),
調(diào)用函數(shù)的時候,實(shí)際傳入的參數(shù)個數(shù),可以比形參個數(shù)多.
不能少,少了會報錯.多了可以不用.


cmake函數(shù)的內(nèi)部變量:
就是cmake函數(shù)中自帶的一些變量.
ARGV0 ,ARGV1,ARGV02....... :
ARGV0代表第一個參數(shù),ARGV1代表第二個參數(shù),......
ARGV:
函數(shù)中傳入形參的列表.
ARGN:
函數(shù)中傳入多余的參數(shù)列表.
ARGC:
函數(shù)調(diào)用是,實(shí)際上傳入?yún)?shù)的個數(shù).
測試的最好方法就是輸出出來:


函數(shù)的作用范圍:
cmake函數(shù)的作用范圍是整個cmake工程.
以為就是全局的,類似于全局變量.
在一個CMakeLists.txt中定義的函數(shù),可以應(yīng)用于另外的CMakeLists.txt中.