CLion 中 的 MinGW 配置(及中文坑解决) - 知乎
Windows-MinGW-CMake-OpenCV 配置 - 知乎
笔者前面发布了vs2019下opencv的配置教程,但是vs的项目有点臃肿,相对而言笔者更喜欢用clion进行开发.于是有了这片探索博文.
第一部分都是照搬的知乎一位作者的答案,因为写的很好没有必要改.
首先安装CMake,下图演示了大概安装流程:
1- 去 CMake 官网(https://cmake.org/download/)下载系统对应的安装包,此处为:cmake-3.21.3-windows-x86_64.msi
2- 也就是这个安装包
3- 点击 Next
4- 点击 Accept 然后 Next
5- 此处可选择是否将 CMake 加入系统环境变量,我选择了加
6- 此处可选择 CMake 安装路径
7- 点击 Install
8- 此处安装需要一段时间
9- 点击 Finish
正常情况下,此时打开 Windows PowerShell,输入 cmake --version ,可以得到以下输出:
说明 CMake 安装成功。当然也可能得到以下输出:
此时需要将 cmake 所在的 bin 路径加进环境变量中
1- 在 此电脑 上右键,点击 属性
2- 点击左侧的 高级系统设置
3- 点击 环境变量
4- 上下的 Path 环境变量随便设置一个就行
5- 将 cmake.exe 所在路径加进环境变量,通常是安装路径下的 bin 里面
注意添加环境变量时,有可能会提示路径格式不规范,改一下不规范的名称即可
注意改变环境变量后,一定要重新打开终端窗口(包括 PowerShell 或 VSCode 里面的终端),否则不会生效
再来安装 MinGW64,下图演示了大致流程:
1- MinGW64 的安装包被托管到 SourceForge 上面(https://sourceforge.net/projects/mingw-w64/)
2- 也就是这个安装包
3- 点击 Next
4- 配置一些选项,Version 选择最新,Architecture 可选择32位(i686)还是64位(x86_64),其他也不知道是啥就先默认吧
5- 可选择安装路径
6- 此处因为会下载一些东西,所以比较慢
7- 点击 Finish
8- 类似 CMake,也需要将 mingw64 下面的 bin 路径加入环境变量,此处不赘述,可用 mingw32-make --version 和 gcc --version 来检查是否配置好
将 CMake 和 MinGW64 配置好后,就可以来写我们的第一个程序,文件结构和文件内容如下图所示:
生成 MakeFile,在此目录下:
PS C:\Users\dcyang\helloWorld> mkdir build
PS C:\Users\dcyang\helloWorld> cd build
PS C:\Users\dcyang\helloWorld\build> cmake -G "MinGW Makefiles" ..
输出:
-- The C compiler identification is GNU 8.1.0
-- The CXX compiler identification is GNU 8.1.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/gcc.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/g++.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/dcyang/helloWorld/build
随后 make,由于我们用的是 mingw,所以需要用 mingw32-make:
PS C:\Users\dcyang\helloWorld\build> mingw32-make
输出:
[ 50%] Building CXX object CMakeFiles/hello.dir/main.cpp.obj
[100%] Linking CXX executable hello.exe
[100%] Built target hello
此时新的文件结构如下:
可见,生成了 hello.exe,我们在命令行运行它:
PS C:\Users\dcyang\helloWorld\build> .\hello.exe
输出:
Hello World
至此,已经配置好了基础的 C++环境,下面来看怎样配置 OpenCV 环境
下载opencv本体和扩展包,在如下地址:
本体:
https://github.com/opencv/opencv/archive/master.zip
扩展包
https://github.com/opencv/opencv_contrib/archive/master.zip
选定想要存放Opencv的路径,把两个扩展包拖过去并且解压缩.笔者这里选择的是C:\Software\OpenCV之中.
在选定的文件夹之中,打开一个带梯子的命令行,笔者这里是用配好的clash打开的,具体方法发不上来.大家可以自行研究.
之所以是需要带梯子,是因为有两个依赖库protobuf和ffmpeg的下载在国内是连接不上去的.
然后在这个命令行之中,创建一个用来存放build的文件夹,并进入:
C:\Software\OpenCV>mkdir mingw-build
C:\Software\OpenCV>cd mingw-build
然后用以下命令生成 MakeFiles:
cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=C:\Software\OpenCV\mingw-build -DINSTALL_PYTHON_EXAMPLES=ON -DINSTALL_C_EXAMPLES=ON -DOPENCV_EXTRA_MODULES_PATH=..\opencv_contrib-master\modules -DBUILD_EXAMPLES=ON ..\opencv-master
注意根据自己的情况修改DCMAKE_INSTALL_PREFIX的值,这个是选择编译库最终存放路径,笔者这里选择依旧是在mingw-build里面.
顺利执行后,可以得到如下输出,同时在我们新建的 mingw-build 文件夹里面多出了许多文件(如果不,这步会失败,因为有的依赖包下载不下来):
随后根据这些文件正式进行编译,执行:
mingw32-make install -j8
其中 -j8 代表用 8核 进行加速编译,你也可以根据CPU核心数进行设置
经过一段时间的编译,会在我们创建的 build 下面新增很多文件:
编译结束后还需要将 OpenCV 加进我们的环境变量,有两个:
setx OpenCV_DIR " C:\opencv-4.5.3\build"
然后还有要把C:\Software\OpenCV\mingw-build\bin 加入path之中,方法跟上面cmake一样.
打开CLion,配置toolchains :在 Settings → Build, Execution, Deployment 中找到。
点击添加MinGW,CLion 应该会自动搜索到 mingw64 的安装位置,如图所示(如果没有搜索到就手动定位)
因为我们已经将 OpenCV 加进了环境变量,所以用 CMake 就可以搜索到相应的头文件和库文件。回到前面那个 helloworld 工程,更改CMakeLists.txt:
用 find_package( OpenCV REQUIRED ) 可以根据环境变量找到我们编译好的OpenCV包,并且也会设置 OpenCV_INCLUDE_DIRS 和 OpenCV_LIBS 的值
随后再进入 build,重新 mingw32-make 一次,可以得到新的 hello.exe,然后执行
如果可以画出一张图片,就说明 opencv 配置完成:
同理,在CLion之中,创建一个项目,并且把上面的CMakeLists 还有 cpp文件复制过去,编译,也可以成功编译.大功告成!