Windows命令行编译C++程序

时间:2021-04-19 14:29:44

命令行编译程序代码,因为编译效率高、不用去研究开发工具,可以使初学者集中精力在代码理解上,因此(命令行+文本编辑器【推荐EditPlus】)非常适合编程学习。但往往由于命令行没有像Visual Studio那么友好的UI界面,加上需要记忆一堆参数,因而让很多没有人指导的新手望而生畏。其实,如果有人稍微指点一下,大家会发现,命令行编译其实非常之简单。如果你是新手,想要学习这方面的东西,那么就看完下面的内容吧。


第一步:安装编译环境

下载并安装Visual Studio,本人安装的Visual Studio 2012


第二步:设置环境变量

1)右键“计算机(我的电脑)”,选择“属性->高级系统设置->环境变量”,找到“系统变量”中的“PATH"属性,双击之

2)复制Visual Studio安装目录下的路径“D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin”到环境变量中(PATH中已经有其它变量,则粘贴到最后面,并且用英文“;”与前面的变量隔开)

新手指导:所谓环境变量,其实就是指操作系统执行命令时的默认检索路径。例如,假设有一个名为a.exe的可执行文件,存放于D盘的myApp目录中,不设置环境变量的情况下,你想从命令行启动a.exe,常规方法有两个:1、用DOS的cd命令进入到D:\myApp目录,然后输入a.exe回车;2、输入D:\myApp\a.exe然后回车。无论是方法1或者是方法2,要运行a.exe我们都需要先告诉系统a.exe在什么地方。我们不能直接在命令行输入a.exe然后回车来运行它,在不确定语境(路径)的情况下,系统不知道a.exe是什么东西,因为名为a.exe的文件可以在不同路径下存在若干个。操作系统不可能去搜索所有目录来弄明白a.exe的含义,一方面性能消耗太高,另一方面因为可能存在多个功能不同,仅仅名字相同的a.exe,因此它无法正确判断用户究竟想要执行哪个a.exe。直接输入a.exe然后回车,我们会看到一个错误提示——“a.exe不是内部或外部命令,也不是可运行的程序或批处理文件。”。如果每次执行a.exe都需要人为去告诉系统a.exe的含义(路径),无疑非常之麻烦,于是就有了系统环境变量这个东西来为我们简化操作。当我们将D:\myApp写到系统环境变量中去之后,再次在命令行中输入a.exe并回车时,操作系统就会自动去搜索环境变量路径下的名为a.exe的可执行程序来执行。以上就是系统环境变量的用途


第三步:修改命令行启动参数

1)在“开始->运行”中输入“cmd”,开始菜单中将列出"cmd.exe",右键它,然后“发送到->发送到桌面快捷方式”

2)右键步骤1)中创建的桌面快捷方式,选择“属性->快捷方式”,找到“目标(T)”栏,修改目标为“C:\Windows\System32\cmd.exe /k vcvars32.bat”,修改好后点确定

新手指导:快捷方式的目标就是双击它时希望打开的程序的完整路径。如果足够细心,你应当会发现,上段文字中的目标路径后面有一串字符“/k vcvars32.bat”,它是用来告诉操作系统,在打开cmd.exe时,传什么参数给它。本文参数的意思是指,在运行cmd.exe后先执行批处理文件“vcvars32.bat”,然后等待用户继续输入。要了解一个可执行程序能接收什么参数和每种参数的意义,你可以用如下方法获取相关信息:在“开始->运行” 对话框中输入可执行程序的名字+ “ /?”。例如,我们要查询cmd.exe可接收什么参数,可以这样写:cmd.exe /? 回车(在命令行中执行程序也可用同样的方法查看程序参数)


第四步:编写test.cpp程序

1)在D盘新建一个文件夹,命名为testCode

2)打开testCode,在里面新建一个文本文档,命名为test.cpp(注意,如果你的系统设置中隐藏了已知文件类型的扩展名,必须显示它,否则你创建的test.cpp的真实名字将是test.cpp.txt)

3)用记事本或EditPlus打开test.cpp,在其中写入如下代码:

#include <iostream>

int main()
{
std::cout<<"Hello World!"<<std::endl;
while(1)
{
//ignore
}
}

保存之


第五步:编译test.cpp

1)双击第三步中创建的cmd.exe的桌面快捷方式,打开命令行窗口

2)输入:cd d: 回车

3)输入:cd Ccodes 回车

4)输入:cl -EHsc test.cpp 回车

编译器开始编译test.cpp。我们可以从命令行的输出内容中看到编译结果。如果程序没有书写错误,一定可以编译出一个test.exe和一个test.obj。其中exe文件即是编译后的可执行程序。obj文件是按块编译产生的中间文件。至此,整个命令行编译流程结束。要了解更详细的编译参数使用,可在命令行输入 cl /? 查看,或者找度娘咨询。


注意:

1)如果是你安装的是Visual Studio 2009之前的版本,则可以省略第三步,不用创建带运行参数的cmd.exe,设置完编译器的环境变量后直接在命令行窗口完成后续的编译即可。只有2009以后的版本,在命令行编译时才需要先执行“vcvars32.bat”。

2)Visual Studio 2012以前的命令行编译参数一般用cl -GX xxx.cpp,2012以后建议用cl -EHsc xxx.cpp