這里引用一篇博文
cmake教程
在看這篇博文前我整理了一些基礎知識,如果覺得可以請收藏
C_INCLUDE_PATH(for C header files)和CPLUS_INCLUDE_PATH(for C++ header files)的環境變量是指明頭文件的搜索路徑,此兩個環境變量指明的頭文件會在-I指定路徑之后,系統默認路徑之前進行搜索。
- 1
cmake本身不提供任何搜索庫的便捷方法,所有搜索庫並給變量賦值的操作必須由cmake代碼完成.
include_directories
是用來提供找頭文件路徑的,打個比方,我現在想要#include"cv.h",但是這個cv.h的路徑是/usr/local/include/opencv,那么我總不能在主函數頭前寫#include “/usr/local/include/opencv/cv.h”吧,這個時候就用到include_directories了,它提供了一個搜索頭文件暫時的根目錄,即你可以在cmakelists中寫上include_directories(/usr/local/include)來讓庫文件搜索以/usr/local/include為基礎,即在main函數前寫上#include “opencv/cv.h"即可,
find_package(OpenCV 3 REQUIRED)
也就是只要找到了*.CMAKE,我們就能夠給上圖底部的幾個變量賦路徑
最后,記得將找到的庫連接到我們的可執行文件上
target_link_libraries( imageBasics ${OpenCV_LIBS} )
cmake_minimum_required( VERSION 2.8 )//版本要求
project( imageBasics )//工程名
set( CMAKE_CXX_FLAGS "-std=c++11" )//添加c++ 11標准支持
find_package( OpenCV 3 REQUIRED )//尋找OpenCV.CMakeLists,以此找到包,並賦值各庫相關變量
include_directories( ${OpenCV_INCLUDE_DIRS} )//OpenCV_INCLUDE_DIRS是關於find_package的變量,
//包含了一個路徑,這樣可以在代碼中的#include做根目錄
include_directories(/usr/local/include)//同上,找根目錄
add_executable( imageBasics test_transform2.cpp )//添加對主函數的可執行文件
target_link_libraries( imageBasics ${OpenCV_LIBS} )//鏈接OpenCV庫,OpenCV_LIBS為代表庫可執行文件的變量
//$為取出變量中的值
原文鏈接:link