Cmake语法详解

2019-11-20  本文已影响0人  migill
1、什么是CMake?
2、CMake源文件
3、CMake

注释

变量

#声明变量:set(变量名 变量值)
set(var 123)
#引用变量 message命令用来打印
message("var = ${var}")

列表(lists)

#声明列表 set(列表名 值1 值2 ··· 值N)
#或 set(列表名 "值1;值2; ··· ;值N")
set(list_var 1 2 3 4 5 6)
#或者
set(list_var1 "1;2;3;4;5;6")
message("list_var = ${list_var}")

CMake流程控制-操作符

image.png

CMake流程控制-布尔常量值

CMake流程控制-条件命令

set(if_tap OFF)
set(elseif_tap ON)

if(${if_tap})
  message("if")
elseif(${elseif_tap})
  message("elseif_tap")
else(${if_tap})
  message("else")
endif(${if_tap})

CMake流程控制-循环命令

set(a "")
while(NOT a STREQUAL "xxx")
    set(a "${a}x")
    message("a = ${a}")
endwhile()

CMake流程控制-循环遍历

foreach(item 1 2 3)
    message("item = ${item}")
endforeach(item)

# 循环范围是从0到3
foreach(item RANGE 3)
    message("item = ${item}")
endforeach(item)

# 循环范围是从0到7,循环增量为3。
foreach(item RANGE 0 7 3)
    message("item = ${item}")
endforeach(item)

#foreach还支持对列表的循环。
set(list_var 1 2 3)
foreach(item IN LISTS list_var)
    message("item = ${item}")
endforeach(item)

CMake自定义函数命令

自定义函数命令格式:
function(<name> [arg1 [arg2 [arg3···]]])
    COMMAND()
endfunction(<name>)

函数命令调用格式:
name(实参列表)
function(func x y z)
    message("call function func")
    message("x = ${x}") #1
    message("y = ${y}") # 2
    message("z = ${z}") # 3
    message("ARGC = ${ARGC}") #表示我们传入参数的个数 3
    #ARGV表示我们传入参数的列表1;2;3
    message("arg1 = ${ARGV0}  arg2 = ${ARGV1}  arg3 = ${ARGV2}")
    message("all args = ${ARGV}")
endfunction(func)

func(1 2 3)

CMake自定义宏命令

自定义宏命令格式:
macro(<name> [arg1 [arg2 [arg3···]]])
    COMMAND()
endmacro(<name>)

函数命令调用格式:
name(实参列表)
macro(ma x y z)
    message("call macro ma")
    message("x = ${x}") 
    message("y = ${y}") 
    message("z = ${z}") 
endmacro(ma)

ma(1 2 3)

CMake变量的作用域

上一篇下一篇

猜你喜欢

热点阅读