天天看点

Windows系统使用mingw编译环境

为什么要使用mingw

在笔者开发软件的过程中,逐渐总结了一些对初学者可能很有用并且少走弯路的经验。今天就来说一下编译器的选择。

编译器就是把人类容易读懂的高级程序语言(c,c++,java,python)翻译为低级程序语言的工具。每种编程语言都有其编译器,有的语言在不同的操作系统上还有不同的编译器。其中c/c++是使用很广泛的语言,也是笔者在开发过程中经常用到的语言。

由于最近的项目都是需求在不同的平台上运行,除了选择跨平台的界面框架Qt外,还需要一个跨平台的编译器。

如果没有跨平台的编译器,那代码中就会有很多这种判断操作系统的条件编译分支。

#if defined (Q_OS_LINUX)
	//平台特用操作
#endif
#if defined (Q_OS_WIN32)
	//平台特有操作
#endif
           

主流的c/c++编译器有MSVC和GCC,MSVC是微软Windows平台Visual Studio自带的C/C++编译器,只能在Windows系统下使用。GCC是支持多种编程语言的编译器,支持多种操作系统和多种芯片体系,更重要的是,它是自由软件。

基于此,如果我们想要开发Windows系统和类unix系统都通用的软件,那一定要选择GCC,即使只在Windows系统下开发和分发,对于一个程序员,使用GCC可以像在linux系统上那样使用cmake。众所周知,cmake也是一个跨平台的通用的强大的编译过程管理管理工具,是c/c++程序员必须使用的一个工具。

而在Windows系统上,使用GCC的方法是安装Cygwin或者MingW。但是它们有区别,使用Windows + Cygwin,可以在Windows上学习Linux命令,还可以在Windows上做Linux软件的开发,包括用GCC编译elf(交叉编译);使用Windows/Linux + MingW,可以不使用Windows的MSVC,用GNU的自由软件来编译生成不依赖第三方库的exe二进制程序。

在qt的Windows安装版本中,本身提供的MingW,可以在安装qt的过程中选择安装。安装完成后如果需要在vscode或者命令行中使用gcc编译器,还需要把mingw路径加入环境变量。

如何在vscode中使用mingw(Cmake方法)

在VScode中安装cmake插件,在ctrl+shift+p出现的命令行中输入cmake选择build即可。首次执行需要选择编译器路径,如果把mingw加入环境变量,则可以自动搜索到。当然,你还需要一个正确的Cmakelists.txt文件。这和在Ubuntu系统下的VScode中使用cmake是一样的流程。

一些测试

笔者在Windows系统下已经使用mingw编译环境编译了opencv,使用的是cmake的界面程序,编译过程和使用MSVC类似,需要在配置工程前选择编译器路径(即使你设置了环境变量)。

在vscode下写了helloworld程序,可以正常调试。

一些不足

笔者使用的一些工业相机提供的SDK的库文件在Windows平台下只有MSVC编译版本,使用mingw编译器链接这些库必定困难重重,而且可能根本就行不通。网上有相关的资料,但都是在特殊情况下才有效,不过好在还用Ubuntu版本可供使用。

继续阅读