当前位置: 首页 > backend >正文

CMake语法与Bash语法的区别

CMake语法与Bash语法的区别

CMake使用的不是Bash语法,而是一种专门设计的脚本语言。虽然两者有一些相似之处(比如变量使用${}进行引用),但它们是不同的语言体系。

主要区别

特性CMake语法Bash语法
语言类型构建系统配置语言Unix shell脚本语言
变量引用${VAR}$ENV{VAR}$VAR${VAR}
字符串比较if(VAR STREQUAL "value")if [ "$VAR" = "value" ]; then
列表表示set(MY_LIST a b c)MY_LIST=("a" "b" "c")
函数定义function(my_func)my_func() { ... }
命令执行execute_process(COMMAND cmd)直接执行命令或使用反引号/$()
注释# 注释# 注释

CMake特有的语法元素

  1. 命令调用

    command_name(arg1 arg2)  # 不需要空格分隔
    
  2. 条件语句

    if(condition)# ...
    elseif(another_condition)# ...
    else()# ...
    endif()
    
  3. 循环

    foreach(item IN LISTS my_list)message(STATUS "Item: ${item}")
    endforeach()
    
  4. 特殊变量

    • CMAKE_CURRENT_SOURCE_DIR - 当前处理的CMakeLists.txt所在目录
    • PROJECT_SOURCE_DIR - 项目根目录

相似之处

  1. 变量扩展:都使用${}语法(但CMake更严格)
  2. 注释符号:都使用#
  3. 基本逻辑结构:都有if/else/foreach等控制结构

重要注意事项

  • 空格敏感:CMake命令名和括号之间不能有空格

    message ("Hello")  # 错误 - 括号前有空格
    message("Hello")   # 正确
    
  • 参数分隔:CMake参数用空格分隔,不像Bash可以用引号分组

    set(SOURCES "a.cpp" "b.cpp")  # 正确
    set(SOURCES a.cpp b.cpp)      # 也正确
    
  • 环境变量访问:需要特殊语法

    $ENV{PATH}  # CMake访问环境变量PATH
    

理解这些区别对于正确编写CMake脚本非常重要,特别是当你有Bash背景时,需要避免将Bash的习惯带入CMake脚本编写中。

http://www.xdnf.cn/news/17749.html

相关文章:

  • CV 医学影像分类、分割、目标检测,之【3D肝脏分割】项目拆解
  • 图论Day2学习心得
  • YouBallin正式上线:用Web3重塑创作者经济
  • 强化学习进化之路(GRPO->DAPO->Dr.GRPO->CISPO->GSPO)
  • 自由学习记录(84)
  • 回归算法:驱动酒店智能化定价与自动化运营的引擎—仙盟创梦IDE
  • STL容器详解:Vector高效使用指南
  • 机器学习(一)
  • [论文阅读] 人工智能 + 软件工程 | 从模糊到精准:模块化LLM agents(REQINONE)如何重塑SRS生成
  • 给电脑升级内存,自检太慢,以为出错
  • HTTPS 工作原理
  • 「iOS」————设计架构
  • Vue3 图片懒加载指令
  • 第4节 神经网络从公式简化到卷积神经网络(CNN)的进化之路
  • AI增强SEO关键词表现
  • 预训练模型在机器翻译中的应用:迁移学习的优势详解
  • 举例说明环境变量及 PATH 的作用
  • RuoYi-Vue3-FastAPI框架的功能实现(中)
  • 计算机网络技术学习-day1《网络乾坤:从比特洪流到协议星河的奇幻之旅》​
  • Dynamsoft Capture Vision Crack
  • 反射的详解
  • Vue3 vs Vue2:全面对比与面试宝典
  • BM25:概率检索框架下的经典相关性评分算法
  • 单例模式的理解
  • Windows11 运行IsaacSim GPU Vulkan崩溃
  • FluxApi - 使用Spring进行调用Flux接口
  • 《Foundations and Recent Trends in Multimodal Mobile Agents: A Survey》论文精读笔记
  • 物联网之小白调试网关设备
  • [TG开发]简单的回声机器人
  • hadoop 前端yarn 8088端口查看任务执行情况