[C++][CMake][流程控制]详细讲解

  • 注意:CMake版本要求 > 3.17
  • 通过这种方式,遍历的还是一个或多个列表,可以理解为是方式3的加强版
    • 因为通过上面的方式遍历多个列表,但是又想把指定列表中的元素取出来使用是做不到的,在这个加强版中就可以轻松实现
  • 参数
    • IN:关键字,表示在xxx里面
    • ZIP_LISTS:关键字,对应的是列表list,通过set、list可以获得
    • loop_var:存储每次循环取出的值,可以根据要遍历的列表的数量指定多个变量,用于存储对应的列表当前取出的那个值
      • 如果指定了多个变量名,它们的数量应该和列表的数量相等
      • 如果只给出了一个loop_var,那么它将一系列的loop_var_N变量来存储对应列表中的当前项
        • loop_var_0对应第一个列表
        • loop_var_1对应第二个列表
        • 以此类推…
  • 示例
    cmake_minimum_required(VERSION 3.17)
    project(test)
    
    # 通过list给列表添加数据
    list(APPEND WORD Die SnowK "Die SnowK")
    list(APPEND NAME I am Die SnowK haha)
    
    # 遍历列表
    foreach(item1 item2 IN ZIP_LISTS WORD NAME)
        message(STATUS "当前遍历的值为: item1 = ${item1}, item2=${item2}" )
    endforeach()
    
    message("=============================")
    # 遍历列表
    foreach(item IN ZIP_LISTS WORD NAME)
        message(STATUS "当前遍历的值为: item1 = ${item_0}, item2=${item_1}" )
    endforeach()
    
  • 结果
    -- 当前遍历的值为: item1 = Die, item2=I
    -- 当前遍历的值为: item1 = SnowK, item2=am
    -- 当前遍历的值为: item1 = Die SnowK, item2=Die
    -- 当前遍历的值为: item1 = , item2=SnowK
    -- 当前遍历的值为: item1 = , item2=haha
    =============================
    -- 当前遍历的值为: item1 = Die, item2=I
    -- 当前遍历的值为: item1 = SnowK, item2=am
    -- 当前遍历的值为: item1 = Die SnowK, item2=Die
    -- 当前遍历的值为: item1 = , item2=SnowK
    -- 当前遍历的值为: item1 = , item2=haha
    
  • 上一篇:html+css+js图片手动轮播


    下一篇:昇思25天学习打卡营第十四天|Pix2Pix实现图像转换-基础原理