首页 > 技术文章 > Win10 + vs code + Microsoft Visual C++ (MSVC) compiler toolset + CMake 工具 + vs code CMake Tool 扩展 搭建 C++ 开发环境

sinicheveen 2020-10-13 23:13 原文

1. 环境
 
  1. vs code 版本: 1.50.0 (user setup)
  2. Microsoft Visual C++ (MSVC) compiler toolset
 
2. 安装 Microsoft Visual C++ (MSVC) compiler toolset
 
这里可以通过安装 Visual Studio 来安装 MSVC 编译工具集,也可以通过安装 Build Tools for Visual Studio 来安装 MSVC 编译工具集。
 
这里以安装 Build Tools for Visual Studio 为例:
You can also install just the C++ Build Tools, without a full Visual Studio IDE installation. From the Visual Studio Downloads page, scroll down until you see Tools for Visual Studio under the All downloads section and select the download for Build Tools for Visual Studio
 
Build Tools for Visual Studio 安装完成后自带编译器 cl.exe(类比 Linux GCC G++)和 CMake 生成工具 cmake.exe
 
3. 整体环境搭建流程参看:CMake Tools on Linux
 
4. 搭建 CMake Tools on Win10 Using Build Tools for Visual Studio
 
为了在 Win10 上用 Build Tools for Visual Studio 实现类似的上述环境搭建,需要修改两个地方。
 
4.1 Select a kit
 
1、运行 CMake: Select a Kit  命令,如果可以自动搜索到 MSVC 编译器,那就很简单了,按需选择一个就行。
 
此时运行 CMake: Edit User-Local CMake Kits  命令可以查看 cmake-tools-kits.json 的配置。如果可以自动扫描到 MSVC 编译器,这个配置是自动生成的,不需要手动修改,这里只是查看一下里边的设置格式和语法。
[
    {
        "name": "Visual Studio 生成工具 2019 Release - amd64",
        "visualStudio": "b8e77987",
        "visualStudioArchitecture": "x64",
        "preferredGenerator": {
            "name": "Visual Studio 16 2019",
            "platform": "x64",
            "toolset": "host=x64"
        }
    },
    {
        "name": "Visual Studio 生成工具 2019 Release - amd64_x86",
        "visualStudio": "b8e77987",
        "visualStudioArchitecture": "x64",
        "preferredGenerator": {
            "name": "Visual Studio 16 2019",
            "platform": "win32",
            "toolset": "host=x64"
        }
    },
    {
        "name": "Visual Studio 生成工具 2019 Release - x86",
        "visualStudio": "b8e77987",
        "visualStudioArchitecture": "x86",
        "preferredGenerator": {
            "name": "Visual Studio 16 2019",
            "platform": "win32",
            "toolset": "host=x86"
        }
    },
    {
        "name": "Visual Studio 生成工具 2019 Release - x86_amd64",
        "visualStudio": "b8e77987",
        "visualStudioArchitecture": "x86",
        "preferredGenerator": {
            "name": "Visual Studio 16 2019",
            "platform": "x64",
            "toolset": "host=x86"
        }
    }
]
 
 
 
 
2、正常情况下是可以自动扫描到 MSVC 编译器的,如果运行 CMake: Select a Kit  命令无法自动搜索到 MSVC(Microsoft Visual C++) 的编译器,需要手动指定 MSVC 编译器 cl.exe 的位置。cl.exe 的位置在可以在 Build Tools for Visual Studio 的安装路径下搜索得到,默认安装路径为:C:\Program Files (x86)\Microsoft Visual Studio。此路径下 cl.exe 有四个,分别对应不同平台的版本:
 
运行 CMake: Edit User-Local CMake Kits  命令,然后自动打开 cmake-tools-kits.json,在该文件中添加如下配置:
[
    {
        "name": "msvc-x32",
        "compilers": {
            "C": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.27.29110\\bin\\Hostx86\\x86\\cl.exe",
            "CXX": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.27.29110\\bin\\Hostx86\\x86\\cl.exe"
        }
    },
    {
        "name": "msvc-x64",
        "compilers": {
            "C": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.27.29110\\bin\\Hostx64\\x64\\cl.exe",
            "CXX": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.27.29110\\bin\\Hostx64\\x64\\cl.exe"
        }
    }
]
上边所说的 cl.exe 有四个,这里只用添加两个就行了。经实验这种配置是可行的,当然也可以仿照自动生成的 cmake-tools-kits.json 配置,不过这需要自己摸索了。
 
3、配置完以上再次运行 CMake: Select a Kit  命令就可以选择编译器了。
 
4.2 Select a variant
 
1、这一步需要指定 CMake 可执行程序的路径,和要使用的 CMake 生成器。安装完 Build Tools for Visual Studio 后自带 CMake 可执行程序 cmake.exe,不需要再额外下载第三方工具了。当然,如果用的 MinGW-w64 编译器而不是安装的 Build Tools for Visual Studio,那么需要额外安装 CMake 生成工具,Download | CMake
 
2、如果 4.1 Select a kit 中的 cmake-tools-kits.json 是自动生成的,那么可以跳过后续操作了。
 
3、如果 4.1 Select a kit 中的 cmake-tools-kits.json 是自己手动配置的,这里需要如下设置:
 
1) 查看 Build Tools for Visual Studio 自带的 CMake 可执行程序 cmake.exe 路径:
 
2) 打开 vs code CMake Tools 扩展的设置页面,添加 CMake 可执行程序路径:
 
3) 指定要使用的 CMake 生成器
所谓的生成器就是指定要用 CMake 工具生成的项目类型,Win10 下就是 Visual Studio 工程,Linux 下就是 Makefile 工程。
 
生成器有这些:
[cmake] Generators
[cmake] * Visual Studio 16 2019        = Generates Visual Studio 2019 project files.
[cmake]                                  Use -A option to specify architecture.
[cmake]   Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.
[cmake]                                  Optional [arch] can be "Win64" or "ARM".
[cmake]   Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
[cmake]                                  Optional [arch] can be "Win64" or "ARM".
[cmake]   Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files.
[cmake]                                  Optional [arch] can be "Win64" or "ARM".
[cmake]   Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files.
[cmake]                                  Optional [arch] can be "Win64" or "ARM".
[cmake]   Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files.
[cmake]                                  Optional [arch] can be "Win64" or "IA64".
[cmake]   Visual Studio 9 2008 [arch]  = Generates Visual Studio 2008 project files.
[cmake]                                  Optional [arch] can be "Win64" or "IA64".
[cmake]   Borland Makefiles            = Generates Borland makefiles.
[cmake]   NMake Makefiles              = Generates NMake makefiles.
[cmake]   NMake Makefiles JOM          = Generates JOM makefiles.
[cmake]   MSYS Makefiles               = Generates MSYS makefiles.
[cmake]   MinGW Makefiles              = Generates a make file for use with
[cmake]                                  mingw32-make.
[cmake]   Unix Makefiles               = Generates standard UNIX makefiles.
[cmake]   Green Hills MULTI            = Generates Green Hills MULTI files
[cmake]                                  (experimental, work-in-progress).
[cmake]   Ninja                        = Generates build.ninja files.
[cmake]   Ninja Multi-Config           = Generates build-<Config>.ninja files.
[cmake]   Watcom WMake                 = Generates Watcom WMake makefiles.
[cmake]   CodeBlocks - MinGW Makefiles = Generates CodeBlocks project files.
[cmake]   CodeBlocks - NMake Makefiles = Generates CodeBlocks project files.
[cmake]   CodeBlocks - NMake Makefiles JOM
[cmake]                                = Generates CodeBlocks project files.
[cmake]   CodeBlocks - Ninja           = Generates CodeBlocks project files.
[cmake]   CodeBlocks - Unix Makefiles  = Generates CodeBlocks project files.
[cmake]   CodeLite - MinGW Makefiles   = Generates CodeLite project files.
[cmake]   CodeLite - NMake Makefiles   = Generates CodeLite project files.
[cmake]   CodeLite - Ninja             = Generates CodeLite project files.
[cmake]   CodeLite - Unix Makefiles    = Generates CodeLite project files.
[cmake]   Sublime Text 2 - MinGW Makefiles
[cmake]                                = Generates Sublime Text 2 project files.
[cmake]   Sublime Text 2 - NMake Makefiles
[cmake]                                = Generates Sublime Text 2 project files.
[cmake]   Sublime Text 2 - Ninja       = Generates Sublime Text 2 project files.
[cmake]   Sublime Text 2 - Unix Makefiles
[cmake]                                = Generates Sublime Text 2 project files.
[cmake]   Kate - MinGW Makefiles       = Generates Kate project files.
[cmake]   Kate - NMake Makefiles       = Generates Kate project files.
[cmake]   Kate - Ninja                 = Generates Kate project files.
[cmake]   Kate - Unix Makefiles        = Generates Kate project files.
[cmake]   Eclipse CDT4 - NMake Makefiles
[cmake]                                = Generates Eclipse CDT 4.0 project files.
[cmake]   Eclipse CDT4 - MinGW Makefiles
[cmake]                                = Generates Eclipse CDT 4.0 project files.
[cmake]   Eclipse CDT4 - Ninja         = Generates Eclipse CDT 4.0 project files.
[cmake]   Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files.
 
因为用的 MSVC 编译器,这里可选的应该只能是 Visual Studio 类的,又因为安装的是 Build Tools for Visual Studio,所以这里最好就用 Visual Studio 16 2019  选项。如果用的 MinGW-w64 编译器那么这里应该设置为 MinGW Makefiles  选项。
 
4) 可以直接编辑 setting.json  添加以上两个配置:
"cmake.cmakePath": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\Common7\\IDE\\CommonExtensions\\Microsoft\\CMake\\CMake\\bin\\cmake.exe",
"cmake.generator": "Visual Studio 16 2019"
 
 
5. 注意
 
以上涉及到的所有路径需要根据 Build Tools for Visual Studio 实际安装的版本和路径做对应对应修改。

推荐阅读