cmake foreach 条件判断

打印 上一主题 下一主题

主题 819|帖子 819|积分 2457

格式
  1. foreach(<loop_var> <items>)
  2.   <commands>
  3. endforeach()
复制代码
此中<items>是由空格或空白分隔的项目列表。foreach和匹配的endforeach之间的全部命令都被纪录下来而不被调用。一旦盘算完endforeach,将为<items>中的每个项目调用一次纪录的命令列表。在每次迭代开始时,变量<loop_var>将被设置为当前项的值。<loop_var>的作用域被限定为循环作用域,不必要像C语言一样单独界说,endforeach竣事变量<loop_var>的作用域。
数字迭代循环
  1. foreach(<loop_var> RANGE <stop>)
  2. foreach(<loop_var> RANGE <start> <stop> [<step>])
复制代码
LISTS查找
  1. foreach(<loop_var> IN [LISTS [<lists>]] [ITEMS [<items>]])
复制代码
一般的编程语言只可以查找一个list,cmake 可以查找成多个list合并查找,如:
  1. set(A 0;1)
  2. set(B 2 3)
  3. set(C "4 5")
  4. set(D 6;7 8)
  5. set(E "")
  6. foreach(X IN LISTS A B C D E)
  7.     message(STATUS "X=${X}")
  8. endforeach()
复制代码
结果:
  1. -- X=0
  2. -- X=1
  3. -- X=2
  4. -- X=3
  5. -- X=4 5
  6. -- X=6
  7. -- X=7
  8. -- X=8
复制代码
多组LISTS同时查找
  1. list(APPEND English one two three four)
  2. list(APPEND Bahasa satu dua tiga)
  3. foreach(num IN ZIP_LISTS English Bahasa)
  4.     message(STATUS "num_0=${num_0}, num_1=${num_1}")
  5. endforeach()
  6. foreach(en ba IN ZIP_LISTS English Bahasa)
  7.     message(STATUS "en=${en}, ba=${ba}")
  8. endforeach()
复制代码
结果:
  1. list(APPEND English one two three four)
  2. list(APPEND Bahasa satu dua tiga)
  3. foreach(num IN ZIP_LISTS English Bahasa)
  4.     message(STATUS "num_0=${num_0}, num_1=${num_1}")
  5. endforeach()
  6. foreach(en ba IN ZIP_LISTS English Bahasa)
  7.     message(STATUS "en=${en}, ba=${ba}")
  8. endforeach()
复制代码
可以看到与上面的LISTS查找方式不一样的时ZIP时多个LIST同时查找,而LISTS时3按顺序查找。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万有斥力

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表