cmake_minimum_required(VERSION 3.10) project(cvdemo) function(check_and_replace_path ARG_NAME) if(IS_ABSOLUTE ${${ARG_NAME}}) return() endif() set(PATH_TO_CHECK ${CMAKE_CURRENT_BINARY_DIR}/${${ARG_NAME}}) if(EXISTS ${PATH_TO_CHECK}) message("Path ${PATH_TO_CHECK} exists") get_filename_component(ABSOLUTE_PATH ${PATH_TO_CHECK} ABSOLUTE) if(EXISTS ${ABSOLUTE_PATH}) set(${ARG_NAME} ${ABSOLUTE_PATH} PARENT_SCOPE) else() message(FATAL_ERROR "Invalid path!") endif() else() message(FATAL_ERROR "Path ${PATH_TO_CHECK} does not exist") endif() endfunction() # set(CMAKE_CXX_FLAGS "-O3") set(CMAKE_BUILD_TYPE "Debug") SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}) message("cur dir: ${PROJECT_SOURCE_DIR}") if (NOT DEFINED TARGET_ARCH) set(TARGET_ARCH soc) endif() if (${TARGET_ARCH} STREQUAL "soc") message( "${TARGET_ARCH} mode, starting......") check_and_replace_path(SDK) set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc) set(CMAKE_ASM_COMPILER aarch64-linux-gnu-gcc) set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++) set(BM_LIBS bmlib bmrt bmcv yuv) set(OPENCV_LIBS opencv_imgproc opencv_core opencv_highgui opencv_imgcodecs opencv_videoio) include_directories("${SDK}/include/") include_directories("${SDK}/include/opencv4") link_directories("${SDK}/lib/") message("SDK: " ${SDK}) aux_source_directory(. SRC_FILES) add_executable(cvdemo.soc ${SRC_FILES}) target_link_libraries(cvdemo.soc ${BM_LIBS} ${OPENCV_LIBS} -lpthread -lavcodec -lavformat -lavutil -lavdevice -lavutil) else () set(FFMPEG_DIR /opt/sophon/sophon-ffmpeg-latest/lib/cmake) find_package(FFMPEG REQUIRED) include_directories(${FFMPEG_INCLUDE_DIRS}) link_directories(${FFMPEG_LIB_DIRS}) # use opencv set(OpenCV_DIR /opt/sophon/sophon-opencv-latest/lib/cmake/opencv4/) find_package(OpenCV REQUIRED) link_directories(${OpenCV_LIB_DIRS}) include_directories(${OpenCV_INCLUDE_DIRS}) # use libbmrt libbmlib find_package(libsophon REQUIRED) include_directories(${LIBSOPHON_INCLUDE_DIRS}) link_directories(${LIBSOPHON_LIB_DIRS}) aux_source_directory(. SRC_FILES) add_executable(cvdemo.soc ${SRC_FILES}) target_link_libraries(cvdemo.soc ${BM_LIBS} ${OPENCV_LIBS} -lpthread -lavcodec -lavformat -lavutil -lavdevice -lavutil) endif () # build commands: # cmake .. -DTARGET_ARCH=soc -DSDK=/path/to/soc-sdk