关于MinGW与MSVC
MSVC:
即Microsoft Visual C++ Compiler,即微软自己的编译器
我们下载Windows下的OpenCV时,会带两个文件夹VC14,VC15(分别与Visual Studio的版本有对应关系),这两个文件夹下的库可以直接运行不需要编译
将VS作为Qt的开发环境也是使用这个编译器的缘故
MinGW:
我们都知道GNU在Linux下面鼎鼎大名的gcc/g++,MinGW则是指Minimalist GNU for Windows的缩写
它是将GNU开发工具移植到Win32平台下的产物,即一套Windows上的GNU工具集
用其开发的程序不需要额外的第三方DLL支持就可以在Windows下运行,相对地,不使用动态库导致的就是编译出来的程序大很多。也是可以设置使用静态库的
make、cmake、gccg++是啥?
简单点说gcc是C的编译器,g++是C++的编译器;make
与cmake
其实只是个辅助工具,单只有有个*.cpp
源码文件时,可直接使用g++
进行编译,当工程源码文件多了,一个个编译是非常麻烦的,于是就有了make
工具,进行批量编译,make本质还是调用g++。make凭什么进行编译呢,依靠makefile
文件(makefile文件记录了cpp直接的编译链接关系);但是makefile文件的只做本身也是一个工程,而且随着编译机环境的不同而不同,于是又出现了cmake
工具用于实时制作makefile文件;但是cmake
又凭什么制作makefile了呢?凭CMakeLists.txt
。
所以整个c++编译过程:
*.cpp->cmakelist.txt->cmake
->makefile->make
->可执行文件
MinGW-w64的安装及配置教程
下载地址 https://sourceforge.net/projects/mingw-w64/
https://www.mingw-w64.org/downloads/
下载完成后,开始安装mingw-w64
尼玛,这个总是下载出错
放弃这个总安装方式,直接下载已编译好的包
https://sourceforge.net/projects/mingw-w64/files/
下载完成后,解压到指定C:
目录下
最后设置系统变量
右键“此电脑”–>属性–>高级系统设置–>环境变量–>设置系统变量
编辑path
添加C?_64-8.1.0-release-win32-seh-rt_v6-rev0mingw64in
测试win+R
->cmd
gcc -v
注意:安装的
mingw64/bin
目录下,默认是没make.exe
只有mingw32-make.exe
,我们可以把它复制在该目录下,并改成make.exe
cmake的安装
cmake下载解压到指定目录后,与MinGW-w64的安装方式类似,需要添加bin目录到系统变量的path
中
https://cmake.org/download/
下载后如下所示:
将C:cmake-3.23.0-rc3-windows-x86_64in
添加到系统变量中的path
下
win+R 运行cmd
cmake -version
c++demo
首先创建一个如下项目目录结构
- myDemo
| - build
| - src
| - main.cpp
| - CMakeLists.txt
其中main.cpp
的代码如下
#include <iostream>
int main(){
std::cout<<"Hello World!"<<std::endl;
system("pause");
return 0;
}
CMakeLists.txt 的内容如下
cmake_minimum_required(VERSION 3.0)
project(Hello)
aux_source_directory(./src DIR_SRCS)
add_executable(${PROJECT_NAME} ${DIR_SRCS})
进入build目录
cd build # 目的是cmake构建出来的临时文件放这个文件夹
cmake -G "Unix Makefiles" ..
注意在
build
目录下直接cmake ..
默认会创建Visual Studio 且的使用MSVS编译器
执行cmake -G "Unix Makefiles" ..
后的结果如下
出现了我们期待的Makefile
文件
Cmake命令行使用:
-G 指明生成的Makefile格式
-D 添加参数
-S 指明源码位置
-B 指明输出路径
例如:
cmake -G “MinGW Makefiles” -S “源码路径” -B “输出路径”
或者
cmake -G “MinGW Makefiles” -D CMAKE_TOOLCHAIN_FILE=“编译工具链路径” -S “源码路径” -B “输出路径”
注意:Cmake是不支持中文的,无论是GUI还是命令行,都严禁出现中文字符.
最后build目下开始使用make进行编译
make
运行Hello.exe
后如下