一步一步命令行输出VC hello world
- 安装VS2022
- 编写hello world程序
- 配置cl.exe
- 编译helloworld.cpp
- 总结
安装VS2022
VS2022的安装程序下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/ 。下载完成之后点击程序会进入到选择安装VS2022组件的安装程序,选择你需要的安装组件就好,如果只需要C++的程序就仅安装C++就好了。 这样会轻便很多。
我安装好的目录结构如下图:
编写hello world程序
编写一个最简单的C++ hello word程序.
#include <iostream>
using namespace std;
int main()
{
std::cout<< "hello world " << endl;
return 0;
}
配置cl.exe
VC++
的编译程序为cl.exe
。
以我本机安装的VS2022
目录为例,编译程序在目录D:\dev\vs2022\ide\VC\Tools\MSVC\14.31.31103\bin
下.
在该目录上还有针对主机64位
和X86
的两个文件夹目录。比如我的是64
位的。那我选Hostx64
,然后进入目录又有要编译后的程序是选64
还是X86
的两个目录,如果要编译64
位的程序,选择x64
文件夹就好了。 这样最终到达了cl.exe
所在的目录.
为了方便后续使用命令, 将改路径配置到环境变量Path
路径中。
现在新开一个命令窗口cmd.exe
。可以直接运行cl.exe
了。
编译helloworld.cpp
进入到helloworld.cpp
文件目录. 然后在命令行直接编译该文件
cl.exe -GX helloworld.cpp
以上操作不错意外的报错了。 看报错原因是找不到iostream
这个头文件。头文件的目录在哪里啦?应该也会在这个VS2022
的目录中, 以我本地的环境为例。目录在D:\dev\vs2022\ide\VC\Tools\MSVC\14.31.31103\include
.这里存在很多需要的头文件。 接下将这个目录配置到INCLUDE
环境变量中。
重新启动cmd.exe
编译(一定要重开cmd
,要不然不会重新加载系统的环境变量.
重新编译已经不再报找不到头文件iostream
啦, 但是依然找不到必须的头文件“crtdbg.h”
。看来crtdbg.h
不在刚才的目录下。crtdbg.h
一般会在以个WIndows Kits
的目录下. 我本地环境中可以找到在目录D:\Windows Kits\10\Include\10.0.20348.0\ucrt
中.
这里面也很多头文件, 那也把这个目录配置到INCLUDE
环境变量中。
再试编译。
见上,已经不再报找不到头文件了。 但是报无法做链接操作了,因为找不到静态库libcpmt.lib
。
在前面的MSVC
目录下已经能主要到一个lib
。D:\dev\vs2022\ide\VC\Tools\MSVC\14.31.31103
.在目录lib
下也有两个针对不同平台的目录x86
和x64
把该目录配置到系统环境变量LIB
中。
再次编译。
再次编译,报错找不到kernel32.lib了。我本机也在D:\Windows Kits\10\Lib\10.0.20348.0\um\x64
下。
把目录D:\Windows Kits\10\Lib\10.0.20348.0\um\x64
也配置到系统环境变量LIB
中。
配置完成之后再进行编译操作.
根据以上配置的经验,应该也能推测出在Windows Kits
下能找到了。继续追加系统环境变量LIB
。
再次尝试编译是否能通过.
通过上面不断的修正错误,已经可以完全通过了。程序已经成功输出了helloworld.exe
。
总结
VC
编译使用的是cl.exe
(当然中间还有一些编译链接的过程,直接被包装进去了)。 在编译过程中主要牵扯到了头文件
和静态链接库
.他们使用的环境变量分别为INLUDE
和LIB
。如果编译相应报错就尝试修改追加该参数的值就能解决响应的问题。罗里吧嗦,主要是为了抛砖引玉,更能在青铜选手上解决该问题。