185 lines
8.2 KiB
CMake
185 lines
8.2 KiB
CMake
|
|
# config lite.ai shared lib.
|
|||
|
|
function(add_lite_ai_toolkit_shared_library version soversion)
|
|||
|
|
configure_file (
|
|||
|
|
"${CMAKE_SOURCE_DIR}/lite/config.h.in"
|
|||
|
|
"${CMAKE_SOURCE_DIR}/lite/config.h"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
# 2. glob headers files 这里是项目系统的头文件
|
|||
|
|
file(GLOB LITE_HEAD ${CMAKE_SOURCE_DIR}/lite/*.h)
|
|||
|
|
|
|||
|
|
# 3. glob sources files
|
|||
|
|
file(GLOB LITE_SRCS ${CMAKE_SOURCE_DIR}/lite/*.cpp)
|
|||
|
|
set(LITE_DEPENDENCIES ${OpenCV_LIBS})
|
|||
|
|
|
|||
|
|
if (ENABLE_ONNXRUNTIME)
|
|||
|
|
include(cmake/lite.ai.toolkit-onnxruntime.cmake)
|
|||
|
|
set(LITE_SRCS ${LITE_SRCS} ${ORT_SRCS})
|
|||
|
|
set(LITE_DEPENDENCIES ${LITE_DEPENDENCIES} onnxruntime)
|
|||
|
|
endif()
|
|||
|
|
|
|||
|
|
if (ENABLE_MNN)
|
|||
|
|
include(cmake/lite.ai.toolkit-mnn.cmake)
|
|||
|
|
set(LITE_SRCS ${LITE_SRCS} ${MNN_SRCS})
|
|||
|
|
set(LITE_DEPENDENCIES ${LITE_DEPENDENCIES} MNN)
|
|||
|
|
endif()
|
|||
|
|
|
|||
|
|
if (ENABLE_NCNN)
|
|||
|
|
include(cmake/lite.ai.toolkit-ncnn.cmake)
|
|||
|
|
set(LITE_SRCS ${LITE_SRCS} ${NCNN_SRCS})
|
|||
|
|
set(LITE_DEPENDENCIES ${LITE_DEPENDENCIES} ncnn)
|
|||
|
|
endif()
|
|||
|
|
|
|||
|
|
if (ENABLE_TNN)
|
|||
|
|
include(cmake/lite.ai.toolkit-tnn.cmake)
|
|||
|
|
set(LITE_SRCS ${LITE_SRCS} ${TNN_SRCS})
|
|||
|
|
set(LITE_DEPENDENCIES ${LITE_DEPENDENCIES} TNN)
|
|||
|
|
endif()
|
|||
|
|
|
|||
|
|
# 4. shared library
|
|||
|
|
add_library(lite.ai.toolkit SHARED ${LITE_SRCS})
|
|||
|
|
target_link_libraries(lite.ai.toolkit ${LITE_DEPENDENCIES}) # default: onnxruntime.dll or onnxruntime.lib ???
|
|||
|
|
set_target_properties(lite.ai.toolkit PROPERTIES VERSION ${version} SOVERSION ${soversion})
|
|||
|
|
|
|||
|
|
message("Installing Lite.AI.ToolKit Headers ...")
|
|||
|
|
file(INSTALL ${LITE_HEAD} DESTINATION ${BUILD_LITE_AI_DIR}/include/lite)
|
|||
|
|
|
|||
|
|
message(">>>> Added Shared Library: lite.ai.toolkit !")
|
|||
|
|
|
|||
|
|
endfunction()
|
|||
|
|
|
|||
|
|
# add custom command for lite.ai shared lib.
|
|||
|
|
function(add_lite_ai_toolkit_engines_headers_command)
|
|||
|
|
message(STATUS "come in the move function...")
|
|||
|
|
add_custom_command(TARGET lite.ai.toolkit
|
|||
|
|
PRE_BUILD
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${EXECUTABLE_OUTPUT_PATH} # ${CMAKE_COMMAND}是CMake的路径,-E使CMake运行命令而不是构建
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBRARY_OUTPUT_PATH}
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E echo "Preparing ${LIBRARY_OUTPUT_PATH} ... done!"
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E echo "Preparing ${EXECUTABLE_OUTPUT_PATH} ... done!"
|
|||
|
|
)
|
|||
|
|
message(STATUS "the first ADD_CUSTOM_COMMAND finished.")
|
|||
|
|
|
|||
|
|
# copy opencv2 headers
|
|||
|
|
if (INCLUDE_OPENCV)
|
|||
|
|
add_custom_command(TARGET lite.ai.toolkit
|
|||
|
|
PRE_BUILD
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${BUILD_LITE_AI_DIR}/include/opencv2 # 构建include目录,加入opencv2的include
|
|||
|
|
)
|
|||
|
|
add_custom_command(TARGET lite.ai.toolkit
|
|||
|
|
PRE_BUILD
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LITE_AI_ROOT_DIR}/third_party/include/opencv2 ${BUILD_LITE_AI_DIR}/include/opencv2
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E echo "Installing opencv2 headers to ${BUILD_LITE_AI_DIR}/opencv2 ... done!"
|
|||
|
|
)
|
|||
|
|
endif()
|
|||
|
|
|
|||
|
|
if (ENABLE_ONNXRUNTIME)
|
|||
|
|
add_custom_command(TARGET lite.ai.toolkit
|
|||
|
|
PRE_BUILD
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${BUILD_LITE_AI_DIR}/include/onnxruntime # 构建include目录,加入onnxruntime的include
|
|||
|
|
)
|
|||
|
|
# copy onnxruntime headers # `copy_directory` 复制一个目录及其内容到另一个目录
|
|||
|
|
add_custom_command(TARGET lite.ai.toolkit
|
|||
|
|
PRE_BUILD
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LITE_AI_ROOT_DIR}/third_party/include/onnxruntime ${BUILD_LITE_AI_DIR}/include/onnxruntime
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E echo "Installing onnxruntime headers to ${BUILD_LITE_AI_DIR}/include/onnxruntime ... done!"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
endif()
|
|||
|
|
|
|||
|
|
if (ENABLE_MNN)
|
|||
|
|
add_custom_command(TARGET lite.ai.toolkit
|
|||
|
|
PRE_BUILD
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${BUILD_LITE_AI_DIR}/include/MNN
|
|||
|
|
)
|
|||
|
|
# copy MNN headers
|
|||
|
|
add_custom_command(TARGET lite.ai.toolkit
|
|||
|
|
PRE_BUILD
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LITE_AI_ROOT_DIR}/third_party/include/MNN ${BUILD_LITE_AI_DIR}/include/MNN
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E echo "Installing MNN headers to ${BUILD_LITE_AI_DIR}/include/MNN ... done!"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
endif()
|
|||
|
|
|
|||
|
|
if (ENABLE_NCNN)
|
|||
|
|
add_custom_command(TARGET lite.ai.toolkit
|
|||
|
|
PRE_BUILD
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${BUILD_LITE_AI_DIR}/include/ncnn
|
|||
|
|
)
|
|||
|
|
# copy ncnn headers
|
|||
|
|
add_custom_command(TARGET lite.ai.toolkit
|
|||
|
|
PRE_BUILD
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LITE_AI_ROOT_DIR}/third_party/include/ncnn ${BUILD_LITE_AI_DIR}/include/ncnn
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E echo "Installing NCNN headers to ${BUILD_LITE_AI_DIR}/include/ncnn ... done!"
|
|||
|
|
)
|
|||
|
|
endif()
|
|||
|
|
|
|||
|
|
if (ENABLE_TNN)
|
|||
|
|
add_custom_command(TARGET lite.ai.toolkit
|
|||
|
|
PRE_BUILD
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${BUILD_LITE_AI_DIR}/include/tnn
|
|||
|
|
)
|
|||
|
|
# copy TNN headers
|
|||
|
|
add_custom_command(TARGET lite.ai.toolkit
|
|||
|
|
PRE_BUILD
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LITE_AI_ROOT_DIR}/third_party/include/tnn ${BUILD_LITE_AI_DIR}/include/tnn
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E echo "Installing TNN headers to ${BUILD_LITE_AI_DIR}/include/tnn ... done!"
|
|||
|
|
)
|
|||
|
|
endif()
|
|||
|
|
|
|||
|
|
endfunction()
|
|||
|
|
|
|||
|
|
function(add_lite_ai_toolkit_engines_libs_command)
|
|||
|
|
# copy opencv libs
|
|||
|
|
if (INCLUDE_OPENCV)
|
|||
|
|
message("Installing OpenCV libs -> INCLUDE_OPENCV: ${INCLUDE_OPENCV} ...")
|
|||
|
|
file(GLOB ALL_OpenCV_LIBS ${LITE_AI_ROOT_DIR}/lib/${PLATFORM_NAME}/*opencv*)
|
|||
|
|
file(GLOB FFMPEG_AV_LIBS ${LITE_AI_ROOT_DIR}/lib/${PLATFORM_NAME}/*av*)
|
|||
|
|
file(GLOB FFMPEG_SW_LIBS ${LITE_AI_ROOT_DIR}/lib/${PLATFORM_NAME}/*sw*)
|
|||
|
|
file(INSTALL ${ALL_OpenCV_LIBS} DESTINATION ${LIBRARY_OUTPUT_PATH})
|
|||
|
|
file(INSTALL ${FFMPEG_AV_LIBS} DESTINATION ${LIBRARY_OUTPUT_PATH})
|
|||
|
|
file(INSTALL ${FFMPEG_SW_LIBS} DESTINATION ${LIBRARY_OUTPUT_PATH})
|
|||
|
|
endif()
|
|||
|
|
# copy onnxruntime libs
|
|||
|
|
if (ENABLE_ONNXRUNTIME)
|
|||
|
|
message("Installing ONNXRuntime libs -> ENABLE_ONNXRUNTIME: ${ENABLE_ONNXRUNTIME} ...")
|
|||
|
|
file(GLOB ALL_ONNXRUNTIME_LIBS ${LITE_AI_ROOT_DIR}/lib/${PLATFORM_NAME}/*onnxruntime*)
|
|||
|
|
file(INSTALL ${ALL_ONNXRUNTIME_LIBS} DESTINATION ${LIBRARY_OUTPUT_PATH})
|
|||
|
|
endif()
|
|||
|
|
# copy MNN libs
|
|||
|
|
if (ENABLE_MNN)
|
|||
|
|
message("Installing MNN libs -> ENABLE_MNN: ${ENABLE_MNN} ...")
|
|||
|
|
file(GLOB ALL_MNN_LIBS ${LITE_AI_ROOT_DIR}/lib/${PLATFORM_NAME}/*MNN*)
|
|||
|
|
file(INSTALL ${ALL_MNN_LIBS} DESTINATION ${LIBRARY_OUTPUT_PATH})
|
|||
|
|
endif()
|
|||
|
|
# copy NCNN libs
|
|||
|
|
if (ENABLE_NCNN)
|
|||
|
|
message("Installing NCNN libs -> ENABLE_NCNN: ${ENABLE_NCNN} ...")
|
|||
|
|
file(GLOB ALL_NCNN_LIBS ${LITE_AI_ROOT_DIR}/lib/${PLATFORM_NAME}/*ncnn*)
|
|||
|
|
file(INSTALL ${ALL_NCNN_LIBS} DESTINATION ${LIBRARY_OUTPUT_PATH})
|
|||
|
|
endif()
|
|||
|
|
# copy TNN libs
|
|||
|
|
if (ENABLE_TNN)
|
|||
|
|
message("Installing TNN libs -> ENABLE_TNN: ${ENABLE_TNN} ...")
|
|||
|
|
file(GLOB ALL_TNN_LIBS ${LITE_AI_ROOT_DIR}/lib/${PLATFORM_NAME}/*TNN*)
|
|||
|
|
file(INSTALL ${ALL_TNN_LIBS} DESTINATION ${LIBRARY_OUTPUT_PATH})
|
|||
|
|
endif()
|
|||
|
|
endfunction()
|
|||
|
|
|
|||
|
|
function(add_lite_ai_toolkit_test_custom_command)
|
|||
|
|
if (LITE_AI_BUILD_TEST)
|
|||
|
|
# copy opencv & lite.ai.toolkit & engines libs to bin directory
|
|||
|
|
add_custom_command(TARGET lite.ai.toolkit
|
|||
|
|
POST_BUILD
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBRARY_OUTPUT_PATH} ${EXECUTABLE_OUTPUT_PATH}
|
|||
|
|
COMMAND ${CMAKE_COMMAND} -E echo "Installing all lite.ai.toolkit libs to ${EXECUTABLE_OUTPUT_PATH} ... done!"
|
|||
|
|
)
|
|||
|
|
endif()
|
|||
|
|
endfunction()
|
|||
|
|
|
|||
|
|
function(add_lite_executable executable_name field)
|
|||
|
|
add_executable(${executable_name} ${field}/test_${executable_name}.cpp)
|
|||
|
|
target_link_libraries(${executable_name} lite.ai.toolkit) # link lite.ai.toolkit
|
|||
|
|
message(">>>> Added Lite Executable: ${executable_name} !")
|
|||
|
|
endfunction ()
|