CLion+OpenCV+cmake,源码编译及使用
CLion+OpenCV+cmake,源码编译及使⽤
⽂章⽬录
为什么要⽤CLion呢。多个⼯具多条路,现在美国在搞封闭,万⼀哪天VS不能⽤了呢。。。CLion本⾝只是⼀个IDE,没有编译器。像Visual Studio就是IDE和编译器⼀体的,所以安装后即可使⽤,不⽤做额外的配置。想要真正把CLion⽤起来,需要另外配置编译器,我们这⾥的基调是假设VS不能⽤,所以编译器不能使⽤VS,本⽂使⽤的是mingw64。下⾯进⼊正题
⼯具和环境准备
Windows操作系统,win10
安装过程略
mingw64
见后⾯部分
CLion
见后⾯部分
OpenCV源码
官⽹:/
下载页⾯:/releases/
iphone4怎么激活
进⼊下载页⾯,随便下⼀个OpenCV的源码包,即点击Sources进⾏下载,这⾥下载的是opencv-4.4.0.zip cmake
官⽹:/
下载页⾯:/download/
进⼊下载页⾯,下载最新的cmake安装包,.msi后缀的那种,这⾥下载的是cmake-3.18.4-win64-x64.msi
双击安装包,安装cmake。安装路径根据需求修改。
配置mingw64
下载
mingw64官⽹的名称是mingw-w64,从名称就容易看出来这个编译器⽀持64位编程。windows下还有⼀个很容易跟mingw64混淆的编译器,叫MinGW(Minimalist GNU for Windows),MinGW似乎只⽀持32位。
mingw64官⽹:/doku.php
党务工作者事迹材料
下载⽹址:sourceforge/projects/mingw-w64/files/
官⽹没有下载链接,下载链接在sourceforge上⾯。最好不要下载Online Installer,这个在线安装⼯具点开后⾸先要下载⼀个,这个⽂件似乎在墙外,所以在线安装搞不定。
我下载的⽂件是:
windows下似乎有两种版本后缀,⼀个是sjlj,⼀个是seh,两种有什么区别我也不太清楚,只是看seh版本的下载的⼈多,所以就随⼤流了。
有⼀个需要特别注意的地⽅:⼀定要下载64位的mingw64,不要下载32位的(⽂件名中带有-win32),切记!
配置环境变量
mingw64不⽤安装,只需要解压并配置环境变量即可。所以下载完成后⾸先解压到⼀个地⽅,路径中不要有空格。
解压后的⽂件夹中有⼀个bin⽂件夹,将bin的完整路径D:\Program\mingw64\bin加⼊环境变量:
此电脑(右键)-> ⾼级系统设置 -> 环境变量 -> 双击 Path增加环境变量,注意你的路径跟我的可能不⼀样。
配置环境变量后可能需要重启才能⽣效。
cmake构建OpenCV⼯程
构建和编译OpenCV的过程跟CLion没有关系,只跟编译器mingw64有关。
郑州广告材料市场1. 解压opencv-4.4.0.zip,我这⾥解压后的路径是D:\software\opencv-4.4.0,在此路径下新建⼀个⽂件夹build_mingw64,cmake构建的结
果就输出在这个⽂件夹下(build⽂件夹可建⽴在任何地⽅,之所以建⽴在opencv解压⽬录下,为了清楚了解build对应的源代码是哪⼀份,个⼈习惯⽽已)
2. 双击cmake-gui,配置两个路径:
(1)源码路径:D:\software\opencv-4.4.0
(2)构建输出路径:D:\software\opencv-4.4.0\build_mingw64
3. 点击Configure,弹出选择编译器的界⾯,选择MinGw Makefiles,然后点击Finish开始配置,此过程需耗费点时间,另外Configure⼀
般不会⼀次成功,因为FFMPEG总是在cmake的过程中下载失败,FFMPEG是视频编解码需要的库,所以⾮常必要。
尽管Configure第⼀次⽆法成功,但还是得点⼀下才能产⽣⽇志,然后才能根据⽇志去解决问题。第⼀
次Configure后结果见下图,注意到上⾯⼀栏中⼀坨红⾊,表明配置存在问题,下⾯可以看到FFMPEG那⾥都是NO,往上翻⼀翻⽇志就会知道是相关的dll下载不成功。
可以打开下载⽇志⽂件D:/software/opencv-4.4.0/build_查看哪些组件下载失败,此⽂件中也会告诉我们到哪⾥下载缺失的组件。打开该⽇志⽂件后可以到如下信息:
退机票扣多少手续费上⾯的⽇志⾄少告诉我们如下信息:1. opencv_videoio_ffmpeg.dll的下载⽹址;2. 本地存放的路径;3. 需要校验md5。
因为要校验md5,所以我们不能随便下载⼀个同名dll放到本地存放路径下,必需下载上述⽹址的dll。接下来⼿动下载上述⽂件并放⼊.../build_vs2019/3rdparty/ffmpeg中即可。同理下载opencv_videoio_ffmpeg_64.dll和ake。需要注意
ake 点击链接后可能直接打开了链接⽽不是下载,此时不能使⽤复制粘贴的⽅式把信息搞下来,⽽应该在⽹页上点右键 -> 另存为的⽅式保存⽂件,然后把后缀.txt⼲掉,不然MD5校验不通过。
下载好并放⼊相应⽂件夹之后,再次点击Configure进⾏配置,这次速度会快⼀些,因为已经配置好的
内容会直接跳过去。配置好后上⾯的⼀坨红消失了,并且下⾯⽇志也不会有诡异的错误。
4. 在上栏中,确保以下⼏个选项没有被打勾,如果打勾的话可能导致编译失败:
(1)ENABLE_PRECOMPILED_HEADERS
(2)WITH_MSMF
(3)WITH_IPP
(4)WITH_TBB
(5)OPENCV_ENABLE_ALLOCATOR_STATS
(1)~(4)据说是专门为了⽀持VS⽽设置的;
(5)如果勾上的话可能出现以下错误:
gcc: error: long: No such file or directory
D:\Program\mingw64\: preprocessing failed.
mingw32-make[2]: *** [modules\core\CMakeFiles\opencv_core.dir\build.make:1494:
modules/core/CMakeFiles/opencv_core.dir/bj] Error 1
mingw32-make[2]: *** Waiting for unfinished jobs…
mingw32-make[1]: *** [CMakeFiles\Makefile2:1882: modules/core/CMakeFiles/opencv_core.dir/all] Error 2
mingw32-make: *** [Makefile:181: all] Error 2
5. 在上栏中,有⼀个很特别的选项,叫BUILD_opencv_world,如果勾上的话,编译后会⽣成⼀个⽐较⼤的dll,如果不打勾的话,则⽣成
⼀堆零散的dll。
6. 点击Generate⽣成⼯程,这⼀步通常没有什么坑,并且速度⽐较快。
mingw64编译OpenCV⼯程
1. 打开cmd,进⼊build⽬录D:\software\opencv-4.4.0\build_mingw64
2. 输⼊以下命令开始编译:
mingw32-make
mingw32-make -j8
-j8的意思是使⽤多线程编译,不然速度有点慢。后⾯那个8表⽰线程数,CPU好的话可以改⼤点,不太好就改⼩点。
中间如果有warning不⽤管,只要不是error就⾏,error会导致编译失败退出。如果error了,下次再编译前最好使⽤下⾯命令clean⼀下之前的错误编译。
mingw32-make clean
mingw32-make成功以后,在D:\software\opencv-4.4.0\build_mingw64\bin下⾯就出现所需的dll⽂件,但是我们还需要头⽂件和静态库⽂件,整体⽐较分散,为了把所有有⽤的东西都聚到⼀起,也为了后
⾯写程序时调⽤⽅便,在cmd中继续执⾏下⾯命令,将后⾯调⽤所需的⽂件都拷贝到⼀个install⽂件夹下,此步骤也很重要,不要忘记。
mingw32-make install
安装并配置CLion
CLion⽬前针对学⽣、教师、教育机构等等⼀些个⼈或组织有免费或打折的license,但对于⼀般的⼈并没有类似社区版这样的免费版本,所以需要付费使⽤。
安装
去官⽹下载exe后双击安装,没有什么特别需要注意的。
个⼈习惯在Installation Options的地⽅把Add "Open Folder as Project"勾上。勾上后右键点击⽂件夹后,弹出菜单会出现Open Folder as CLion Project,⽅便打开项⽬。
等不到天黑烟火不会太完美
在CLion中配置mingw64
打开CLion,第⼀次打开应该需要激活,但我选择Evaluate for free选项。
点击New Project新建个⼯程,Language standard根据需求选择,然后点击create创建项⽬,进去后应该默认有⼀个hello world的程序。
如果之前已经把mingw64的路径配进环境变量中了,那么CLion可能能够⾃⼰搜索到mingw64并⾃动配置,但是如果没有⾃动配置好的话,那么可以按照如下⽅式配置:依次点击File -> Settings -> Build, Execution, Deployment -> Toolchains,按下图配置
配置CLion的Release模式
此时的CLion已经可以写程序,但是只能在Debug模式下写程序,⽽没有Release模式。
制作卡片
增加Release模式的⽅法⽐较简单,在File -> Settings -> Build, Execution, Deployment -> CMake⾥设置,在右侧界⾯点击“+”号,CLion会⾃动⽣成Release选项(原本只有Debug),然后点击OK。
然后就可以在主界⾯选择Debug还是Release了:
在CLion中使⽤OpenCV
CLion使⽤cmake来配置⼯程,所以调⽤OpenCV的关键就在于写。
在新建⼯程后, 中默认已经有了⼀些内容:
cmake_minimum_required(VERSION 3.17)
project(TestCLion)
set(CMAKE_CXX_STANDARD 17)
add_executable(TestCLion main.cpp)
除了第3⾏外,其它都是必须的。
在我们刚才编译出的OpenCV的install⽬录中有⼀个名为ake的⽂件,告诉我们在中添加哪些东西可以调⽤OpenCV,该⽂件位置为:
D:\software\opencv-4.4.0\build_ake
打开该⽂件,最上⾯的注释写着:
# ===================================================================================
#  The OpenCV CMake configuration file
#
#            ** File generated automatically, do not modify **
#
#  Usage from an external project:
#    In , add these lines:
#
#    FIND_PACKAGE(OpenCV REQUIRED)
#    TARGET_LINK_LIBRARIES(MY_TARGET_NAME ${OpenCV_LIBS})
#
#    Or you can search for specific OpenCV modules:
#
#    FIND_PACKAGE(OpenCV REQUIRED core imgcodecs)
#
#    If the module is found then OPENCV_<MODULE>_FOUND is set to TRUE.
#
#    This file will define the following variables:
#      - OpenCV_LIBS                    : The list of libraries to link against.
#      - OpenCV_INCLUDE_DIRS            : The OpenCV include directories.
#      - OpenCV_COMPUTE_CAPABILITIES    : The version of compute capability
#      - OpenCV_VERSION                  : The version of this OpenCV build: "4.4.0"
#      - OpenCV_VERSION_MAJOR            : Major version part of OpenCV_VERSION: "4"
#      - OpenCV_VERSION_MINOR            : Minor version part of OpenCV_VERSION: "4"
#      - OpenCV_VERSION_PATCH            : Patch version part of OpenCV_VERSION: "0"
#      - OpenCV_VERSION_STATUS          : Development status of this build: ""
#
#    Advanced variables:
#      - OpenCV_SHARED
#
# ===================================================================================
第6到10⾏告诉我们怎么修改以使⽤OpenCV,但事实上只添加9,10两⾏并不⾏。⽐如我们将改成如下内容(注意MY_TARGET_NAME应当改成我们⾃⼰的项⽬名称TestCLion),然后点击CLion右上⾓的Reload changes,当发⽣改变后,右上⾓会⾃动弹出Reload changes可以点。
cmake_minimum_required(VERSION 3.17)
project(TestCLion)
set(CMAKE_CXX_STANDARD 17)
add_executable(TestCLion main.cpp)
find_package(OpenCV REQUIRED)
target_link_libraries(TestCLion ${OpenCV_LIBS})
有⼀点需了解,在中,命令不区分⼤⼩写,如FIND_PACKAGE等同于find_package,但是括号中的变量必需区分⼤⼩写。
然后CLion的下⽅窗⼝会显⽰如下错误信息:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。