VS Code + CMake
前言
CMake 是一个跨平台的开源构建工具,用于管理项目的构建过程。开发人员可以使用 CMake 来描述项目的目录结构、源文件、依赖关系等,并生成适用于不同构建系统的构建文件,如 Makefile、Visual Studio 项目文件等。通过简单的 CMakeLists.txt 文件,开发人员可以轻松地配置、构建和管理复杂的项目。CMake 具有跨平台性、灵活性和易维护性等特点,被广泛应用于现代软件开发中。
Visual Studio Code(简称VS Code)是由微软开发的跨平台轻量级代码编辑器,支持 Windows、macOS 和 Linux 操作系统。VS Code 具有丰富的功能和扩展生态系统,可满足开发人员的各种需求。它支持多种编程语言,具有智能代码补全、调试功能、Git 集成、插件支持等特性,使开发过程更高效。由于其灵活性和强大的功能,VS Code 成为许多开发人员喜爱的首选编辑器之一。
个人偏爱 VS Code 的轻量级和直观的界面,CMake 几乎成为 C/C++ 开源项目的标配,结合两者优点,构建 C++ 项目变得更加高效和便捷。
准备工作
安装 VS Code 和 CMake
具体安装和配置见于 VS Code 安装 、CMake 安装
安装 CMake 扩展插件
在插件商店中搜索 C/C++ Extension Pack,这个插件组合包含 CMake 和 CMake Tools,也可以单独安装 CMake 和 CMake Tools。

使用 CMake 构建程序
示例程序
通过一个简单的 C++ 程序来做演示,示例程序的目录结构和文件如下:
.├── CMakeLists.txt├── hello.cpp├── include│ └── log.h└── src └── log.cpp // log.h 文件#include <iostream>#include <ctime> using namespace std;void log(const string& message); // log.cpp 文件#include "../include/log.h" void log(const string& message) { // 获取当前日期和时间 time_t now = time(0); struct tm *localTime = localtime(&now); // 格式化日期和时间 char buffer[80]; strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", localTime); // 输出日志信息 cout << "[" << buffer << "] " << message << endl;} // hello.cpp 文件#include<iostream>#include "include/log.h" int main(){ std::cout << "Hello World!" << std::endl; log("This is a log message.");}其中 CMakeList.txt 配置如下:
# 指定项目所需的最低CMake版本cmake_minimum_required(VERSION 3.21) # 用于定义项目的名称和支持的编程语言。在这里,项目名称被指定为 "hello",并且指定了使用 C++ 语言(CXX)来编写项目project(hello CXX) # 用于创建一个名为 "hello" 的可执行文件,它由 hello.cpp 和 src/log.cpp 两个源文件构建而成add_executable(hello hello.cpp src/log.cpp) 配置
VS Code 编辑器检测都有 CMakeList.txt 文件,VS Code 底部状态栏显示 CMake 的相关信息

选中左侧栏 CMake 可以修改编译器和变体等信息

也可以通过修改设置,把编译器、变体等信息显示于底部状态栏,使用快捷键 Command + , 或者通过左侧栏底部设置图标→设置 打开设置页面

如上图所示,搜索 cmake.options, Options:Status Bar Visibility 选择 visible 即可在状态栏中显示 CMake 配置信息。
运行
底部状态栏点击运行按钮

上图可见 CMake 的配置、生成和编译执行相关的日志,与 CMake 安装 示例里面的日志是一致的。
VS Code + CMake 的组合如此清新,正是我选择他们的原因。