平台: Windows 11 x64/Ubuntu 22.04
CMake 3.15.5
OpenCV 4.5.0
CMakeLists.txt文件内容:
cmake_minimum_required(VERSION 3.0.0)
project(demo VERSION 0.1.0)
# script
include_directories(./include)
include_directories(./3rd)
FILE(GLOB SRC_HEADER_LIST ./include/*.h ./include/*.hpp)
FILE(GLOB SRC_SOURCE_LIST ./sources/*.c ./sources/*.cxx ./sources/*.cpp)
FILE(GLOB SRC_3RD_HEADER_LIST ./3rd/*.h ./3rd/*.hpp)
FILE(GLOB SRC_3RD_SOURCE_LIST ./3rd/*.c ./3rd/*.cxx ./3rd/*.cpp)
SOURCE_GROUP("SRC Head" FILES ${SRC_HEADER_LIST})
SOURCE_GROUP("SRC Impl" FILES ${SRC_SOURCE_LIST})
SET(SRC_LIST ${SRC_HEADER_LIST} ${SRC_SOURCE_LIST} ${SRC_3RD_HEADER_LIST} ${SRC_3RD_SOURCE_LIST})
MESSAGE(STATUS "sources list " ${SRC_LIST})
# package OPENCV
if (WIN32)
set(OpenCV_DIR "D:/ENV/opencv-4.5.0")
elseif(APPLE)
message(STATUS "Now is Apple systems.")
else ()
set(OpenCV_DIR "/ENV/opencv-4.5.0/lib/cmake/opencv4")
endif ()
find_package(OpenCV REQUIRED)
message(STATUS "OpenCV libaray information:")
message(STATUS " version: ${OpenCV_VERSION}")
message(STATUS " libraries: ${OpenCV_LIBS}")
message(STATUS " header file: ${OpenCV_INCLUDE_DIRS}")
SET(EXTRA_INCS ${OpenCV_INCLUDE_DIRS} )
SET(EXTRA_LIBS ${OpenCV_LIBS} )
# package ###
message(STATUS "EXTRA_INCS: ${EXTRA_INCS}")
message(STATUS "EXTRA_LIBS: ${EXTRA_LIBS}")
#add_definitions( )
# # Library
# add_library( libDemo SHARED ${SRC_LIST})
# target_link_libraries( libDemo ${EXTRA_LIBS} )
# target_compile_definitions( libDemo PRIVATE API_EXPORTS)
# set_target_properties( libDemo PROPERTIES
# RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
# )
# exe:
add_executable( demo ${SRC_HEADER_LIST} main.cpp )
target_link_libraries( demo ${EXTRA_LIBS} )
set_target_properties( demo PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
使用:
1,创建项目demo文件夹(比如使用VSCode进行管理更方便)
2,进入demo项目文件夹中,创建两个文件:
main.cpp 测试代码脚本文件
CMakeLists.txt cmake项目生成脚本文件
3,在main.cpp文件中实现main方法及其他功能代码
4,在CMakeLists.txt 用上面的内容进行适当修改(比如添加新的引用库,修改opencv实际路径)
5,使用cmake-gui.exe对项目进行工程生成
6,编译项目工程