cmake編譯opencv程序


來源:http://blog.csdn.net/tobacco5648/article/details/8643934

用cmake來編譯OpenCV程序還是很方便的。

    在D:/test目錄下有一個含有opencv api的源文件facedetect.cpp,現要將其編譯為DisplayImage.exe程序,首先創建一個文件CMakeLists.txt文件,內容如下:

cmake_minimum_required(VERSION 2.8)                                       //版本
project( DisplayImage )                                                                          //工程
set(OpenCV_DIR E:/opencv)                                                                 //設置OpenCV所在目錄,問后面的find_package提供位置
find_package( OpenCV REQUIRED )                                                  //會在OpenCV所在目錄查找配置文件OpenCVConfig.cmake
add_executable( DisplayImage facedetect.cpp )                               //向工程添加源文件
target_link_libraries( DisplayImage ${OpenCV_LIBS} )                   //添加鏈接庫

 

    接着,在工程目錄下運行cmake -G "MinGW Makefiles" . 

    此命令在當前目錄下生成makefile文件

    最后,直接運行make,生成可執行文件


 

來源:http://blog.csdn.net/zhuqibing/article/details/17184939

二、用CMake自動配置OpenCV

沒用CMake的時候,要想在VS中使用OpenCV,配置起來相當麻煩,比如包含路徑、鏈接路徑、鏈接庫都要配置。有了CMake,只需要2個命令:

find_package(OpenCV REQUIRED)

target_link_libraries(*** ${OpenCV_LIBS} )

就可以輕松搞定。

注:

1、OpenCV和OpenCV_LIBS這2個名字中,每個字母的大小寫不能亂用,因為CMake設置了這樣的固定大小寫;

2、REQUIRED參數,其含義是指這個共享庫是否是工程必須的,如果使用了這個參數,說明這個鏈接庫是必備庫,如果找不到這個鏈接庫,則工程不能編譯;

3、***是你項目要生成的exe或者動態庫名字。

 

在你的CMakeLists.txt中添加上面2個命令,用CMake進行configure,提示錯誤:

 

CMake Error at CMakeLists.txt:6 (find_package):

By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has

asked CMake to find a package configuration file provided by "OpenCV", but

CMake did not find one.

 

解決方法:添加電腦的環境變量——>系統變量——>新建,變量名:OpenCV_DIR,變量值:D:\soft\opencv\build,重啟電腦,再用CMake進行configure和generate,然后打開解決方案***.sln,進入VS,編譯,運行。

 

點評:為什么要添加環境變量呢?

CMake可以自動找到安裝在你電腦里的OpenCV頭文件和庫(動態庫和靜態庫),但是你要告訴它你的OpenCV安裝在哪,要不然搜索你的整個硬盤?很顯然,CMake不會這樣做。

注意:有一種情況下,需要使用OpenCV的項目不需要target_link_libraries(*** ${OpenCV_LIBS} ):

你的解決方案中包含多個項目,其中一個項目A用來生成動態庫,該項目的CMakeLists.txt中包含target_link_libraries(*** ${OpenCV_LIBS} );該解決方案中的項目B依賴項目A,那么項目B的CMakeLists.txt中就不需要包含target_link_libraries(*** ${OpenCV_LIBS} )。

 


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM