116 lines
4.2 KiB
CMake
Executable File
116 lines
4.2 KiB
CMake
Executable File
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") |