ss928_framework/CMakeLists.txt
2024-12-16 13:31:45 +08:00

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")