listutils.cmake

来自「一个语言识别引擎」· CMAKE 代码 · 共 41 行

CMAKE
41
字号
### STRING UTILITIES, from CMAKE public wiki

# lisp CAR
MACRO(CAR var)
  SET(${var} ${ARGV1})
ENDMACRO(CAR)

# lisp CDR
MACRO(CDR var junk)
  SET(${var} ${ARGN})
ENDMACRO(CDR)

# get the length of a list
MACRO(LIST_LENGTH var)
  SET(entries)
  FOREACH(e ${ARGN})
    SET(entries "${entries}.")
  ENDFOREACH(e)
  STRING(LENGTH ${entries} ${var})
ENDMACRO(LIST_LENGTH)

# get the n-th element of a list
MACRO(LIST_INDEX var index)
  SET(list . ${ARGN})
  FOREACH(i RANGE 1 ${index})
    CDR(list ${list})
  ENDFOREACH(i)
  CAR(${var} ${list})
ENDMACRO(LIST_INDEX)

# check if something is in a list
MACRO(LIST_CONTAINS var value)
  SET(${var})
  FOREACH (value2 ${ARGN})
    IF (${value} STREQUAL ${value2})
      SET(${var} TRUE)
    ENDIF (${value} STREQUAL ${value2})
  ENDFOREACH (value2)
ENDMACRO(LIST_CONTAINS)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?