背景:在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})
這個方法親測成功!