C++命令行编译工具:MinGW的g++安装、开发人员命令提示

之前一直用Mac自带的g++对C++源文件进行命令行编译,这两天想转到windows平台上,发现命令行并不能直接用。因此,在这里记录一下简单的编译方法。

本文主要整理了一下两个方法:

1. 利用MinGW进行g++安装
2. 利用Visual Studio自带的开发工具

一、方法1

一开始参照这个链接里的方法进行配置,一切安装正常。

创建测试代码stl_map.cpp,如下所示。

#include <iostream>
#include <string>
#include <map>
using namespace std;
class MyCompare {
public: 
	bool operator()(const string &s1, const string &s2) const{
		return s1.length() < s2.length();
	}

};
int main(){
	map<string, int, MyCompare> test;
	test["Bob"] = 90;
	test["Alice"] = 88;
	test["Lily"] = 78;
	for(map<string, int>::iterator iter = test.begin(); iter != test.end(); ++iter){
		cout << iter->first << endl;
	}
	return 0;
}

当我编译下面的程序(g++ -std=c++11 stl_map.cpp)并运行生成的a.exe文件的时候,发现如下错误。

在这里插入图片描述

参考的网上相似的错误,认为是在调用链接库的时候,可能优先调用了其它路径下的同名lib。

因此,我首先把C:\MinGW\bin在用户环境变量的PATH的序列上升到第一位。重启终端编译,发现并无卵用。

这是因为,PATH变量的值是用户变量中的值与系统变量中的值的叠加,只不过系统环境变量对所有用户起作用,而用户环境变量只对当前用户起作用。那么很有可能是,系统环境变量里的PATH中某同名lib的优先级跑到C:\MinGW\bin前面去了。

所以,删去用户环境变量里PATH的C:\MinGW\bin,在系统环境变量PATH的值前插入“C:\MinGW\bin;”。重启终端编译并运行,成功,输出结果如下。

在这里插入图片描述

需要注意的是,因为这里我们把MinGW\bin提前,所以之后我们用到其他同名lib的时候,不可避免地也会遇到这种状况。

二、方法2

方法2主要是按照微软官方文档,它有一个前提是系统为Windows10,并且已经安装了Visual Studio 2015及以上。满足上述前提,可进行如下操作对c++文件进行编译。

1. 打开“开发人员命令提示”。

打开方法参考这篇微软文档。一般来说,我们直接在“开始>应用程序”里就可以找到开发人员命令提示。不过也有意外,这时可以在计算机中手动查找这个文件,文件路径为“C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2017\Visual Studio Tools”,如下所示。

在这里插入图片描述

如果觉得每次从这个路径打开麻烦的话,可以打开Visual Studio,进入“工具>外部工具”,操作如下。

在这里插入图片描述

  • 选择“添加”按钮,为新菜单项输入“标题”,例如 Command Prompt。
  • 在“命令”字段中,指定要启动的文件,例如 %comspec% 或 C:\Windows\System32\cmd.exe。
  • 在“参数”字段中,指定可在其中找到要使用的特定命令提示的位置,例如 /k “C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat”(此命令启动随 Visual Studio 2017 Enterprise 一起安装的开发人员命令提示)。 根据 Visual Studio 版本和安装位置更改此值。
  • 为“初始目录”字段选择一个值,例如“项目目录”。
  • 选择“确定” 按钮,系统便添加了新菜单项,我们就可以从“工具”菜单访问命令提示符,如下所示。

在这里插入图片描述

2. 创建新目录来保存程序

在“开发人员命令提示”窗口中,输入 cd \ 命令,以将目录更改为驱动器根目录。 输入 md examples 命令,以创建示例代码的目录。 然后输入 cd examples 命令,以使其成为当前工作目录。 这就是第一个程序运行的位置。

这个步骤可以省略。

3. 编译

在步骤2目录下或者任意目录下创建一个测试文件hello.cpp,内容如下:

#include <iostream> 
using namespace std; 

void main() { 
	cout << "Hello, world, from Visual C++!" << endl;
}

在文件目录下,输入 cl /EHsc hello.cpp 来编译你的程序。编译器的输出如下所示:

Microsoft (R) C/C++ 优化编译器版本 19.00.23504 适用于 x86 版权所有 (C) Microsoft Corporation。  保留所有权利。 hello.cpp Microsoft (R) 增量链接器版本 14.00.23504.0 版权所有 (C) Microsoft Corporation。  保留所有权利。 /out:hello.exe hello.obj  

4.运行

若要运行hello.exe程序,直接在命令提示出输入hello。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值