Windows 下 C++ 编程环境指导

背景介绍

最近安装了 Windows 系统,从来没有在 Windows 下面做过 Unix C++ 开发的我略有些懵逼(为什么在 windows 下开发是 Unix?因为我主要还是用 macOS 和 linux)。在经过一段时间的适应后,总结下Windows下开发的经验,供后续查看。

操作系统建议

建议采用 Windows 10 作为工作的操作系统, 并安装WSL作为编译环境(详见下文).

服务器使用 Ubuntu / CentOS / Manjaro.

我个人服务器使用 Manjaro,这是一个滚动式更新的系统,是在Arch Linux基础上修改的更加易用的发行版。软件众多,同时社区维护的 aur 也支持直接从github上获取源代码编译安装。

Windows Subsystem for Linux

Windows Subsystem for Linux(简称WSL)是一个为在Windows 10上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,目标是使纯正的 Ubuntu 映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。

安装指引请查看Microsoft官网: Linux 安装指南适用于 Windows 10 的 Windows 子系统

后续 WSL2 发行后,本段再做修改。考虑到 WSL 和 WSL2 是不冲突的两种功能,届时再看使用哪一种。

命令行环境参考

Windows

主要采用PowerShell, 详情参考PowerShell官网.

PowerShell 插件

PowerShell插件主要位于PowerShell Gallery, 可安装oh-my-posh, posh-git等插件

Windows下命令行软件安装

Windows下包管理器主要采用Choco, 可像Linux下包管理器一样使用.

Linux

Linux 下命令行建议采用 zsh, 并加装Oh-my-zsh. (WSL自然也包括在其中)

以下为安利贴: 为什么说 zsh 是 shell 中的极品?

命令行软件

Windows下命令行软件建议采用FluentTerminal, 使用Choco安装 choco install fluent-terminal. 在设置中可选择WSL/PowerShell/CMD 作为默认命令行, 建议采用WSL.

C++ 代码规范

Google C++ Style Guide

C++代码规范目前采用Google C++ Style Guide 也可参考此中文版教程.

后续会有微调, 将会详细写出.

Lint

Lint采用Clang-tidy做静态分析, 目前项目根目录有clang-tidy.py 文件来做批量Lint. 可采用命令行 ./clang-tidy.py -checks "google-*" -fix -p ./build ./src/* 做检查.

编辑器指引

编辑器采用Clion作为C++开发编辑器, Visual Studio Code 作为辅助编辑器使用.

Clion配置

注册码

Clion注册码可以去淘宝购买,2018-02版本后授权服务器已失效。

WSL连接

请参考Clion官方文档: How to use wsl development environment in clion

Google C++ Style Guide 配置

请参考Clion官方文档: Code Style. C/C++ #Set From

在Set From 中选择 Google.

VSCode配置

强烈建议安装插件

  • 配置同步
    • settings sync
  • Git相关
    • gitblame
    • githistory
    • gitlens
  • C++相关
    • cmake
    • cmake-tools
    • cpptools
    • include-autocomplete
  • Markdown及UML相关
    • markdown-all-in-one
    • markdown-preview-enhanced
    • plantuml
    • vscode-markdownlint
  • 方便编辑
    • beautify
    • indent-rainbow
    • output-colorizer
    • path-intellisense
    • rainbow-csv

建议安装插件:

可能有点多…可自行筛选, 覆盖了一些常用语言

  auto-close-tag
  auto-rename-tag
  background
  beautify
  better-toml
  bracket-pair-colorizer
  change-case
  cmake
  cmake-tools
  code-runner
  code-settings-sync
  code-spell-checker
  copilot-vscode
  cpptools
  gc-excelviewer
  gitblame
  githistory
  gitlens
  Go
  include-autocomplete
  indent-rainbow
  iris
  JavaScriptSnippets
  markdown-all-in-one
  markdown-pdf
  markdown-preview-enhanced
  mssql
  nbpreviewer
  nodejs-docs
  output-colorizer
  path-intellisense
  plantuml
  powershell
  pyqt-integration
  python
  quicktype
  rainbow-csv
  react-native-react-redux
  rest-client
  theme-dracula
  tslint
  vs-color-picker
  vscode-babel-coloring
  vscode-clang
  vscode-database
  vscode-eslint
  vscode-filesize
  vscode-hexdump
  vscode-hexo
  vscode-import-cost
  vscode-insertdatestring
  vscode-language-babel
  vscode-language-pack-zh-hans
  vscode-leetcode
  vscode-markdownlint
  vscode-mysql
  vscode-power-mode
  vscode-qt-for-python
  vscode-styled-components
  vscode-svgviewer
  vscode-text-pastry
  vscode-yaml
  webpack

可用Sync配置

首先安装settings sync插件, 选择同步公开gist: 7b4026c4de4f3170fb1770945dbdf52e