写点什么

Visual Studio 支持 CMake 语法高亮和智能代码补全

  • 2014-10-14
  • 本文字数:1547 字

    阅读完需:约 5 分钟

Visual Studio 对新编程语言的支持是非常强大的,但很少有人有能力并下决心去利用这个平台。David Golub 却是其中之一,他为 Visual Studio 带来了对 CMake 的支持。

Visual Studio 的 CMake 工具功能包括:

  • CMake 代码语法高亮
  • 为 CMake 的命令和变量提供成员选择列表框
  • 输入 CMake 命令的时候会提示参数
  • CMake 代码括号匹配
  • 支持插入 CMake 代码片段(snippet)
  • 在 Visual Studio 的编辑器中,当光标位于一个标准的 CMake 命令或变量之上的时候,按下 F1 就可以得到基于上下文的帮助内容
  • 通过 Visual Studio 的 Tools 菜单就可以访问 CMake 的图形用户界面和文档

InfoQ:我们有些读者不熟悉 CMake,你能告诉我们它是用来干什么的吗?

David Golub:CMake 是一个跨平台的 makefile 生成工具,主要用于 C 和 C++ 编程。在各种操作系统中,有很多工具可以用于编译 C 和 C++ 代码,每种工具都有自己的 makefile 和项目文件格式。举个例子,Windows 上的项目可能会使用 Visual Studio 的项目文件,而 Linux 项目则会使用 GNU makefile。CMake 提供了一种语言,开发者可以用它来定义项目的结构以及各种必要的配置步骤,它是跨平台的。CMake 工具能处理这些代码,根据程序的目标平台,生成对应的 makefile 或项目文件。 在我刚刚开始为 Visual Studio 开发 CMake 工具的时候,我在 Organic Motion 工作,这家公司开发了 3D 动作捕获系统 OpenStage 以及其他一些产品。虽然 OpenStage 只能在 Windows 上运行,但是代码树是用 CMake 来创建的,这样既容易在将来需要的时候把代码移植到其他平台,也可以充分利用 CMake 的高级配置功能,这些功能在某些方面要比原生的 Visual Studio 项目文件更强大。

InfoQ:你为 Visual Studio 开发 CMake 插件花了多少工作量?

David:我为 Visual Studio 开发 CMake 工具前后大约花了一年时间,从 2012 年 4 月开始,到 2013 年 5 月发布第一个候选版本。我都是用晚上和周末的时间来完成这个项目的,鉴于我的工作职责所在,只有在这些时间我才有空。

InfoQ:开发过程中有哪些方面比你预想的要简单得多,或困难得多?

David:Visual Studio 的 SDK 强大得不可置信,开发者可以利用它来为这个最佳 IDE 添加对任何编程语言的完整支持。但是,在有些情况下,SDK 的文档还有点不足,要搞明白某些功能怎么用,必须要反复试验几次。举个例子,在实现括号匹配的时候,Visual Studio 收到的范围对象(span object)里面并不包含字符在文件中的索引号,却包含了字符间空格的索引号。如果你尝试通过构建一个范围对象,指定相同起始和结束的索引号,来加亮单个字符,那结果就是什么都没加亮。弄明白 Visual Studio SDK 所有晦涩之处是最难搞的部分。

InfoQ:这个插件的哪部分工作最难实现?

David:为实现智能补全去解析代码,和编译器解析代码是不一样的。编译器的目的是接受句法正确的代码,输出可执行文件。如果被编译的代码有语法错误,编译器会产生对应的错误信息并终止执行。而另一方面,智能补全必须在程序员输入的时候就工作。在它被触发的任何时间点上,编辑器中的代码都不大可能是一个句法上完全正确的程序。并且,智能补全的解析必须要很快才行。开发者希望他们输入的瞬间就可以得到补全提示。为了解决这些挑战性问题,我编写了一组解析函数,这些函数能解析各种智能补全触发点需要的信息,却不需要构建抽象的语法树。

David Golub 是 MangoDB 的工程师,在那里,他是 MongoDB 管理服务小组的成员,担任 Windows 专家的角色。在来到 MangoDB 之前,他在耶鲁大学和哥伦比亚大学学习了计算机科学,之后 2012 年到 2013 年之间在 Organic Motion 工作。他也同时管理着 Greater New York Roads 网站。他很喜欢徒步,喜欢走荒郊野路去探索各种有趣的地点。

参考英文原文: Syntax Highlighting and IntelliSense support for CMake

2014-10-14 21:587187
用户头像

发布了 77 篇内容, 共 40.6 次阅读, 收获喜欢 26 次。

关注

评论

发布
暂无评论
发现更多内容

零碳园区:绿色转型的关键实践与智慧支撑

开源能源管理系统

开源 能源管理系统

拒绝代码纠错不准、原有逻辑被改!飞算 JavaAI 行间预测功能实战解析

飞算JavaAI开发助手

行业分享丨AI赋能流体仿真:从虚拟风洞到智能设计的实践与案例

Altair RapidMiner

人工智能 AI 仿真 CAE hyperworks

产研协作必备!一键拆分用户故事,敏捷冲刺规划不要太轻松

职场工具箱

效率工具 产品经理 敏捷开发 在线白板 在线协作

多点DMALL与OceanBase:实现租户间资源完全隔离与低成本系统升级

老纪的技术唠嗑局

oceanbase 国产数据库

了解CDC(变更数据捕获)如何革新数据集成方式

谷云科技RestCloud

数据传输 ETL 实时同步 CDC 数据集成平台

从易用性的角度来看,哪个ETL平台比较好用?

谷云科技RestCloud

Apache ETL 数据集成平台 ETLCloud informatica

数字人超级大师:微擎生态下的高保真 AI 数字人解决方案

微擎应用市场

性能监控与剖析工具全指南:测试开发工程师必备利器

测试人

Apache Flink错误处理实战手册:2年生产环境调试经验总结

Apache Flink

大数据 flink 实时计算

588次长征征程再添新星!我国成功发射卫星互联网低轨卫星

DevOps和数字孪生

航空航天

AI 生成内容崛起,内容创作者如何避免被取代?

Wolink

人工智能、 海外营销推广 沃链Wolink 达人营销

AI测试平台实战:自动化评分与多模型对比评测深度解析

测试人

为什么编码智能体可以重塑开发范式?

Comate编码助手

AI辅助编程 AI 编程 文心快码 文心快码Zulu

当远控遇上AI会擦出什么火花?细数ToDesk与向日葵的AI赋能功能

小喵子

远程 向日葵 ToDesk

智联招聘 × Pulsar|Pulsar 客户端在高吞吐场景下的内存控制实践

AscentStream

消息队列

基于开发者空间知识推荐能力,搭建DeepSeek知识集

华为云开发者联盟

DeepSeek 华为开发者空间

IT管理员遇到了公司数据泄露问题,老板要让IT管理员出一个泄露报告, IT管理员怎么办?

运维有小邓

AWS OpenSearch 可观测最佳实践

观测云

AWS

深入解析Cairo静态分析工具Amarna:安全编程新利器

qife122

静态分析 区块链安全

一键生成完整SpringBoot工程!飞算JavaAI 代码工具如何解决老项目重构痛点

飞算JavaAI开发助手

云智慧CastrelAI:生成式AI重塑故障根因新范式

云智慧AIOps社区

智能运维 IT 运维 工单管理

AI Agent 发展趋势与架构演进

阿里巴巴云原生

阿里云 AI 云原生 agent

Elasticsearch 8.17 智能检索升级全攻略

阿里云大数据AI技术

搜索引擎 elasticsearch 阿里云 多模态 rag

AI智能体标准化之路:从西部荒野到协议共识

qife122

AI智能体 人工智能治理

qData 数据中台开源版发布 1.0.3 版本,全面升级数据质量与稽查管理能力

千桐科技

数据治理 qData 开源数据中台 Java数据中台 千数平台

开源协同驱动能源管理革新:MyEMS 如何重塑行业生态

开源能源管理系统

开源 能源管理系统

手把手教你搭建MCP服务器

测吧(北京)科技有限公司

#人工智能 MCP

基于开发者空间云开发环境,使用MateChat+MaaS构建智能对话应用

华为云开发者联盟

MaaS 华为开发者空间 MateChat

Databend 亮相 DTCC 2025:存算分离架构引领湖仓一体化

Databend

Visual Studio支持CMake语法高亮和智能代码补全_语言 & 开发_Jonathan Allen_InfoQ精选文章