cmake_minimum_required(VERSION 3.5.1)
project(MediaCodec310P)

if(NOT DEFINED ENV{MX_SDK_HOME})
    message(FATAL_ERROR "MX_SDK_HOME is not defined, please set it first.")
else()
    set(MX_SDK_HOME $ENV{MX_SDK_HOME})
    message("MX_SDK_HOME=$ENV{MX_SDK_HOME}")
endif()

# 设置c++编译版本
execute_process(
    COMMAND awk "/MindX SDK mxVision:/ {print \$NF}" ${MX_SDK_HOME}/version.info
    OUTPUT_VARIABLE MXVISION_VERSION
    OUTPUT_STRIP_TRAILING_WHITESPACE
)

if("${MXVISION_VERSION}" STREQUAL "mxVision:6.0.RC3")
    set(CMAKE_CXX_STANDARD 14)
    message(STATUS "C++14 standard is set.")
else()
    set(CMAKE_CXX_STANDARD 11)
    message(STATUS "C++11 standard is set.")
endif()

add_definitions(-D _GLIBCXX_USE_CXX11_ABI=0 -Dgoogle=mindxsdk_private)
set(TARGET_NAME mediaCodec310P)

include_directories(${MX_SDK_HOME}/include)
include_directories(${MX_SDK_HOME}/opensource/include)
include_directories(${MX_SDK_HOME}/opensource/include/opencv4)
include_directories(${MX_SDK_HOME}/opensource/include/gstreamer-1.0)
include_directories(${MX_SDK_HOME}/opensource/include/glib-2.0)
include_directories(${MX_SDK_HOME}/opensource/lib/glib-2.0/include)

link_directories(${MX_SDK_HOME}/lib)
link_directories(${MX_SDK_HOME}/opensource/lib)

link_directories(/usr/local/Ascend/ascend-toolkit/latest/acllib/lib64)

add_executable(${TARGET_NAME} main.cpp)
target_link_libraries(${TARGET_NAME} mxbase streammanager glog pthread)

set(cpprest_DIR ${MX_SDK_HOME}/opensource/lib/libcpprest.so)
if(EXISTS ${cpprest_DIR})
    target_link_libraries(${TARGET_NAME} cpprest)
endif()