Linux 編譯基於Opencv的C++項目

背景:在linux下使用cmake編譯C++項目,其中使用的到opencv,有兩種方法

1、項目中只有簡單的一個源碼文件,直接使用命令,這個沒有親測,僅是記錄

gcc Test.c -o Test `pkg-config --cflags --libs opencv`

2、使用cmakelist文件進行編譯

我嘗試過直接在cmakelist文件中設置 opencv的include和lib路徑,但是還是失敗,一直提示錯誤,undefined reference to `cv::matchShapes(cv::_InputArra 吧啦吧啦的

這個方法的基本知識瞭解:opencv安裝目錄下存在一個opencv.pc文件,

按照如下內容編寫cmakelist文件(cmake如何編譯,詳見另一篇文章在VScode 中利用 Cmake進行編譯運行c++項目

cmake_minimum_required(VERSION 2.8)
project(ModelWash)
set(CMAKE_BUILD_TYPE Release)#compile mode
#set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)#set path of executable file
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)#set outpath of produced lib
#set(CMAKE_VERBOSE_MAKEFILE TRUE)


#編譯選項
set (CMAKE_CXX_FLAGS "-g -std=c++11 -Wformat=0 ${CMAKE_CXX_FLAGS} ") 
# 尋找OpenCV庫
find_package(OpenCV REQUIRED)#打開opencv安裝目錄下的opencv.pc就明白爲啥這樣寫了
# 添加頭文件
include_directories(
${PROJECT_SOURCE_DIR}/include 
)
add_executable(ModelWash src/cpp1 src/cpp2 ... src/Main.cpp)#only one main.cpp

# 鏈接OpenCV庫
target_link_libraries( ModelWash ${OpenCV_LIBS})

這個方法親測成功!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章