cmake_minimum_required(VERSION 3.24) include(${CMAKE_SOURCE_DIR}/cmake/cmakebase.cmake) include(${CMAKE_SOURCE_DIR}/cmake/project.cmake) include(${CMAKE_SOURCE_DIR}/cmake/ss928.cmake) message(STATUS "========================") message(STATUS ${CMAKE_SYSTEM_NAME}) message(STATUS ${CMAKE_SYSTEM_PROCESSOR}) message(STATUS "========================") PROJECT(ss928_exe) set(CMAKE_SOURCE_DIR "./") find_package(OpenCV 4.10) if(NOT OpenCV_FOUND) message(FATAL_ERROR "OpenCV >= 4.10 not found.") endif() MESSAGE(${OpenCV_VERSION}) # 检测操作系统和架构 if(CMAKE_SYSTEM_NAME STREQUAL "Linux") if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") set(PLATFORM "linux/x64") elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") set(PLATFORM "linux/aarch64") else() message(FATAL_ERROR "Unsupported architecture on Linux") endif() elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(PLATFORM "windows/x64") else() message(FATAL_ERROR "Unsupported architecture on Windows") endif() else() message(FATAL_ERROR "Unsupported operating system") endif() # 输出当前系统和架构 message(STATUS "operating system: ${PLATFORM}") SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/output/") INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/ss928sdk/common/ ${CMAKE_SOURCE_DIR}/ss928sdk/common/audio/adp ${CMAKE_SOURCE_DIR}/ss928sdk/include/ ${CMAKE_SOURCE_DIR}/ss928sdk/include/npu ${CMAKE_SOURCE_DIR}/ss928sdk/include/svp_npu ${CMAKE_SOURCE_DIR}/svp/ ${CMAKE_SOURCE_DIR}/svp/common/ #${CMAKE_SOURCE_DIR}/svp/npu/include/ # ${CMAKE_SOURCE_DIR}/svp/npu/sample_svp_npu/ ${CMAKE_SOURCE_DIR}/thridpart/ncnn/include/ ${CMAKE_SOURCE_DIR}/libapi/ ${CMAKE_SOURCE_DIR}/libapi/include ${CMAKE_SOURCE_DIR}/libapi/sort/include ${CMAKE_SOURCE_DIR}/libapi/svp_npu ${CMAKE_SOURCE_DIR}/libapi/sys ${CMAKE_SOURCE_DIR}/libapi/ive "/usr/local/include/opencv4" ) LINK_DIRECTORIES( ${CMAKE_SOURCE_DIR}/ss928sdk/lib/ ${CMAKE_SOURCE_DIR}/ss928sdk/lib/npu/ ${CMAKE_SOURCE_DIR}/ss928sdk/lib/svp_npu ${CMAKE_SOURCE_DIR}/thridpart/ncnn/lib /usr/lib/aarch64-linux-gnu ) aux_source_directory(${CMAKE_SOURCE_DIR}/ss928sdk/common/ SOCSDKCOMMON_SRCLIST) aux_source_directory(${CMAKE_SOURCE_DIR}/ss928sdk/common/audio SOCSDKCOMMON_SRCLIST) aux_source_directory(${CMAKE_SOURCE_DIR}/svp/common/ SVP_SRCLIST) aux_source_directory(${CMAKE_SOURCE_DIR}/svp/ SVP_SRCLIST) aux_source_directory(${CMAKE_SOURCE_DIR}/libapi/sort/src LIBAPI_SRCLIST) aux_source_directory(${CMAKE_SOURCE_DIR}/libapi/svp_npu LIBAPI_SRCLIST) aux_source_directory(${CMAKE_SOURCE_DIR}/libapi/sys LIBAPI_SRCLIST) aux_source_directory(${CMAKE_SOURCE_DIR}/libapi/ive LIBAPI_SRCLIST) aux_source_directory(${CMAKE_SOURCE_DIR}/libapi/ LIBAPI_SRCLIST) add_executable(${PROJECT_NAME} ${SVP_SRCLIST} ${SOCSDKCOMMON_SRCLIST} ${LIBAPI_SRCLIST}) set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS "-Wl,-rpath-link,/usr/lib/aarch64-linux-gnu") target_link_libraries( ${PROJECT_NAME} ${SOC_LIBS} ${SYSTEM_LINK_LIB} /home/setups/ss928_framework/thridpart/ncnn/lib/libncnn.a /home/setups/ss928_framework/thridpart/ncnn/lib/libgomp.a ${OpenCV_LIBS}) set(OUTPUT_LIB_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/lib) add_custom_command( TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT_LIB_DIR} COMMAND ${CMAKE_COMMAND} -E copy ../doc/atc/yolov5s_v6.2.om ../output COMMAND ${CMAKE_COMMAND} -E copy ../doc/rundemo.sh ../output COMMAND ${CMAKE_COMMAND} -E copy ../doc/test.jpg ../output COMMAND ${CMAKE_COMMAND} -E copy_directory ../ss928sdk/lib ${OUTPUT_LIB_DIR} COMMENT "Copying lib files to output directory" ) add_custom_target(cpfiles ALL DEPENDS ${PROJECT_NAME}) # for so add_library(ss928driver MODULE ${SVP_SRCLIST} ${SOCSDKCOMMON_SRCLIST} ${LIBAPI_SRCLIST}) target_link_libraries( ss928driver ${SOC_LIBS} ${SYSTEM_LINK_LIB} /home/setups/ss928_framework/thridpart/ncnn/lib/libncnn.a /home/setups/ss928_framework/thridpart/ncnn/lib/libgomp.so ${OpenCV_LIBS}) set_property(TARGET ss928driver PROPERTY POSITION_INDEPENDENT_CODE ON) #添加-fPIC set_target_properties(ss928driver PROPERTIES LINK_FLAGS "-fPIC")