Visual Studio 2017 Comunity 版
在学习 C/C++ 时, 需要编译源文件, 但是不希望为此而打开这个庞大的 IDE, 所以研究如何在命令行中调用它的编译工具链:
1 | cl.exe 编译 |
但是, 即便找到了这些可执行文件的路径, 还需要解决一大堆 include, lib 等等的搜索路径, 非常麻烦.
使用官方提供的 bat 脚本
微软为开发者准备了命令提示符不过, 这些命令提示符打开的是 cmd, 没有 tab 补全, 体验还是不太好, 在进入后通过 powershell -NoExit
进入 PowerShell 环境就舒服多了.
自行配置环境变量
要自行配置环境变量, 需要进行这些步骤:
- 将 MSVC 编译工具的路径添加到
PATH
环境变量中 - 添加
include
,lib
环境变量.
MSVC 的编译工具分布比较分散, 在 IDE 中, 就有 “32位机器编译32位程序”, “64位机器编译32位程序”, “64位机器编译64位程序” 等配置, 在学习 C/C++ 的时候, 随意选择一项即可, 比如选择 Hostx64/x64
(64位机器编译64位程序) 这个配置, 就需要把对应的路径添加到 PATH
中.
而 lib, include 的路径也分为 VS 目录下, Microsoft SDKs 中以及 Windows Kit 中. 也分了多个目录. 在使用了官方提供的脚本后, 查看到环境变量发生了后面的变化, 因此将这些变量设置为对应的值应该就能正常工作了.
在配置了环境变量之后, 可以使用 refreshenv
指令在当前终端里刷新, 但是如果要每个终端都能使用, 则需要重启一下.
VS_DIR WIN_KIT WIN_SDK
为了方便, 首先定义几个常用的路径为环境变量.
VS_DIR
是 Visual Studio 的安装目录, 使用默认安装的话是在C:\Program Files (x86)\Microsoft Visual Studio
中, 需要选择版本, 社区版则将这个变量设置为C:\Program Files (x86)\Microsoft Visual Studio\2017\Community
.WIN_KIT
则是编译 Windows 应用程序所需的头文件与库文件的目录,C:\Program Files (x86)\Windows Kits
, 该目录下的子目录是各个版本的 Windows Kit, win10 的 Kit 命名为10
, win8 的则是8.1
等等.WIN_SDK
是一系列开发工具包, 路径为C:\Program Files (x86)\Microsoft SDKs
, 其下也有一个Windows Kits
目录, 不过里面是ExtensionSDKs
暂时不知道是干什么的, 不过也添加上吧.
在 “环境变量编辑器” 里把这些变量各自赋值为:
1 | VS_DIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community |
PATH
将 VS 的编译工具路径添加到 PATH
中, 在环境变量 PATH
中添加这些项目:
1 | %VS_DIR%\VC\Tools\MSVC\14.15.26726\bin\Hostx64\x64; |
include
1 | %VS_DIR%\VC\Tools\MSVC\14.15.26726\lib\x64; |
同样的, 不要搞错版本号.
lib
1 | %VS_DIR%\VC\Tools\MSVC\14.15.26726\include; |
使用 cl 编译器
可以通过 cl -help
查看帮助信息. 其中比较另人在意的部分有:
预处理
1 | -预处理器- |
语言
1 | -语言- |
链接
1 | -链接- |
杂项
1 | - 杂项 - |
输出文件
1 | -输出文件- |
一些常用的命令
编译多个文件
1 | cl /Fe可执行文件名 ${files} 编译多个文件, 将最终生成的可执行文件命名 |
控制编译的进度
1 | cl /P ${files} # 只进行预处理 |
保留汇编文件
1 | cl /FAs ${files} # 在完全编译之后保留汇编语言文件 |
暂时记录这么多
使用 nmake
据称 nmake 和 GNUmake 的语法一致, 可通过 跟我一起写 Makefile 学习