您的位置:首页 > 编程语言 > C语言/C++

在Windows下使用CMake+MinGW搭建C/C++编译环境

2017-09-20 11:30 656 查看

1 工具介绍

作为一款执行效率较高的面向对象语言,C++常被用于服务端后台、平台软件的开发,而现在的服务端一般运行在Linux/Unix 环境下,对于习惯在Windows开发环境下工作的C/C++程序员,学习在Linux环境下完成编码、编译、调试可能需要较长的时间,在各位熟悉Linux开发环境下,不妨现在熟悉的Windows环境下先完成代码的编辑和编译,这时我们就需要搭建Windows下的Linux编译环境。
Windows环境下的Linux编译环境需要安装MinGW,可以粗略理解为可以运行在Windows中的Linux编译器。当我们需要编译一个多文件工程的时候,为方便起见,我们需要编写工程对应的(若干)个Makefile文件(当然可以直接使用g++依次编译多个文件并链接生成目标文件),而Makefile的编写也是需要学习的,很庆幸的是,我们有CMake工具,可以根据我们的工程结构,自动生成Makefile文件,下面我们来了解这两个工具:


1.1 MinGW

MinGW 是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时库。简单说,MinGW是一个编译环境,包含了C++代码编译过程中需要的三方库、头文件……用于完成C++源码的编译、链接,类似于早期Windows下的Turbo C。现在的VisualStudio环境集成了编译、连接的功能,所以实际的编译、连接过程对开发者是不可见的,不同的是,VS使用了微软的编译器、连接器。在安装、配置MinGW后,我们就可以在命令行中通过g++命令编译、链接生成可执行文件。



1.2 CMake

CMake是一个跨平台的自动化建构系统,它使用一个名为 CMakeLists.txt 的文件来描述构建过程。CMake可以运行在Windows和Linux环境下,根据配置的编译器不同,生成符合所在操作系统的Makefile文件,在Windows下可以生成VS的工程文件系统。



2 工具安装配置:

2.1 MinGW

2.1.1 安装

从MinGW官网(MinGW Installer)获取MinGW安装文件,双击开始安装:

安装目录可以自己指定,但必须记录,以便后续配置环境变量



安装工具开始下载需要的安装文件



“Basic Setup”中的所有包建议选择,其他的根据自己需要选择



安装过程中,部分包可能下载失败,不用关注,等完成后再更新一次即可,如果更新也失败可换时间重试,或者等到后续用到的时候再下载。



2.1.2 配置

在设置Windows环境变量,在Path中增加MinGW的bin目录



注意:

- 启动Windows命令行,执行g++ –version命令,如果能查到g++版本,则说明配置正确。



- 如果命令执行失败,则可能是G++安装失败,或者环境变量设置不生效,可以重新安装或者重新配置环境变量后重新启动即可。

2.2 CMake

2.2.1 安装

从CMake官网(CMake Installer)取CMake安装文件,双击后开始安装:



安装过程中建议参照以下配置设置环境变量:



2.2.2 配置

CMake在安装过程中已经配置了环境变量,所以不需要手动配置。安装完成后,可以在命令行中执行命令cmake –version,如果安装配置正确,则会显示下列信息:



3. 使用MinGW在Windows环境下编译C++代码并生成可执行文件:

3.1 源代码所在目录结构:



3.2 建立CMakeList文件:



3.3 启动GUI版CMake工具,生成Makefile:

配置编译目录——源码根目录:



点击Config按钮,配置编译器:



点击Generate按钮,生成makefile:



3.4 执行Make命令,生成可执行文件:





4. 常见错误:

4.1 在CMake界面点击Config,提示工程文件无效:



此时可能是CMakeList.txt不存在或者命名错误,请手动建立改文件,文件名大小写敏感,建立文件后,请重新启动CMake。

4.2 CMakeList.txt中存在语法错误:



图示在CMakeList.txt文件第10行,文件路径使用“\”,这是不合法的,应该改成“//”

4.3 在make过程中,报“头文件找不到”错误:



该问 题可能是引用了在MinGW中不存在的头文件。当在Window中借助VS工具开发的代码时,该问题可能较为常见。如果大家建立的工程需要在Linux 下运行,那在编码过程中,尽量避免使用Windows系统文件或者VS专有的头文件,或者通过编译宏进行区分。

Created by 王彬

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cmake mingw linux windows