You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

211 lines
6.5 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

cmake_minimum_required(VERSION 3.10)
project(QGuideArith VERSION 1.0 LANGUAGES CXX)
# 启用 C++17
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(BUILD_ARITH_STUDIO TRUE) # 设置是否构建算法平台
set(BUILD_AI_ONNX_DETECT FALSE) # 设置是否基于ONNX构建AI识别模块
set(BUILD_AI_CUDA_DETECT FALSE) # 设置是否基于CUDA构建AI识别模块
set(BUILD_AI_TRACK FALSE) # 设置是否构建AI跟踪模块
# ###########################架构优化开关#####################################
MESSAGE(STATUS "********************************************")
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64")
add_definitions(-DNEON)
add_definitions(-DUSE_CPUBIND)
SET(CMAKE_BUILD_TYPE "Release")
MESSAGE(STATUS "build on aarch64+++++++++++++++++++++++,add_definitions -DARM64")
elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "AMD64" OR "64")
message(STATUS "this is AMD64 cpu **")
endif()
MESSAGE(STATUS "********************************************")
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
# 设置源码路径宏
set(SOURCE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
# 将路径编码,便于各人模型文件的路径一致
add_definitions(-DSOURCE_PATH=\"${SOURCE_PATH}\")
# ##########################全局配置##############################
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# set(CMAKE_SKIP_BUILD_RPATH ON)
# 为win下使用vs编译器强制启用 UTF-8 编码
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/source-charset:utf-8>")
# 强制编译器检查类型问题
# add_compile_options(-Werror)
# add_compile_options(-Wreturn-type)
#
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-Werror,-Bsymbolic")
# 设置全局编译选项
# 开启单元测试:算法模块单元测试
ENABLE_TESTING()
# ########################## 第三方库 ##############################
# SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread")
# opencv + TensorRT
IF(WIN32)
set(OpenCV_DIR "D:/Opencv_v/4.8.1/build/install/x64/vc17/lib")
set(TRT_DIR "D:/TensorRT/TensorRT7")
ELSE(WIN32)
set(OpenCV_DIR "/home/wcw/opencv-3.4.16/install/share/OpenCV")
ENDIF(WIN32)
find_package(OpenCV REQUIRED)
if(OpenCV_VERSION VERSION_LESS "4.6")
add_definitions(-DOPENCV_LEGACY)
message(STATUS "OPENCV_LEGACY")
else()
add_definitions(-DOPENCV_MODERN)
message(STATUS "OPENCV_MODERN")
endif()
# 全局包含opencv
include_directories(${OpenCV_INCLUDE_DIRS})
# 链接必要的opencv库
SET(${OpenCV_lib_use} opencv_core)
# ########################## AI ONNX支持库配置 ###########################
IF(BUILD_AI_ONNX_DETECT)
add_definitions(-DENABLE_AI_ONNX_DETECT)
SET(Arith_AIDET_DIR AIDetector/x86_onnx) # AI识别库
SET(Arith_AIDET_SRC_DIR ${Arith_AIDET_DIR}/src)
IF(WIN32)
set(LIB_Arith_AIDET_NAME libAIDetector)
ELSE(WIN32)
set(LIB_Arith_AIDET_NAME AIDetector)
ENDIF(WIN32)
add_subdirectory(${Arith_AIDET_DIR})
ENDIF()
# ########################## AI CUDA支持库配置 ##########################
IF(BUILD_AI_CUDA_DETECT)
add_definitions(-DENABLE_AI_CUDA_DETECT)
SET(Arith_AIDET_DIR AIDetector/x86_cuda) # AI识别库
SET(Arith_AIDET_SRC_DIR ${Arith_AIDET_DIR}/src)
IF(WIN32)
set(LIB_Arith_AIDET_NAME libAIDetector)
ELSE(WIN32)
set(LIB_Arith_AIDET_NAME AIDetector)
ENDIF(WIN32)
add_subdirectory(${Arith_AIDET_DIR})
ENDIF()
# ########################## AI跟踪支持库配置 ###########################
IF(BUILD_AI_TRACK)
add_definitions(-DENABLE_AI_TRACK)
SET(Arith_AITRACK_DIR AITracker/x86) # AI跟踪库
SET(Arith_AITRACK_SRC_DIR ${Arith_AITRACK_DIR}/src)
IF(WIN32)
set(LIB_Arith_AITRK_NAME libAITracker)
ELSE(WIN32)
set(LIB_Arith_AITRK_NAME AITracker)
ENDIF(WIN32)
add_subdirectory(${Arith_AITRACK_DIR})
ENDIF()
# ########################## 算法库配置 ##############################
SET(ArithDIR NeoTracker)
SET(ArithSrcDIR ${ArithDIR}/src)
SET(SVMmodelsDIR ${ArithSrcDIR}/SVM/models)
# 设置算法库目录
IF(WIN32)
set(LIB_TRACKER libGuideTracker)
ELSE(WIN32)
set(LIB_TRACKER GuideTracker)
ENDIF(WIN32)
# 添加算法子目录
add_subdirectory(${ArithDIR})
IF(BUILD_ARITH_STUDIO)
# ########################## Qt环境 ##############################
IF(WIN32)
set(CMAKE_PREFIX_PATH "D:/Qt/5.15.2/msvc2019_64")
ELSE(WIN32)
set(CMAKE_PREFIX_PATH "/home/wang/Qt/5.15.2/gcc_64")
ENDIF(WIN32)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets LinguistTools)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools)
find_package(Qt5 REQUIRED COMPONENTS PrintSupport)
set(TS_FILES QGuideArith_zh_CN.ts)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
# 引入算法头文件
include_directories(${ArithSrcDIR})
include_directories(${ArithSrcDIR2})
include_directories(${ArithSrcDIR3})
include_directories(${ArithLogSrcDIR})
include_directories(${Arith_AIDET_SRC_DIR})
include_directories(${Arith_AITRACK_SRC_DIR})
include_directories(${Arith_EXTTLD_SRC_DIR})
# 算法平台源文件
SET(QGuideArith_DIR ${CMAKE_SOURCE_DIR}/QGuideArithStudio/src)
# 包含本地路径否则qt提升类报错
include_directories(${QGuideArith_DIR})
# 日志SPDLOG
# include_directories(${CMAKE_SOURCE_DIR}/3rdParty)
FILE(GLOB PROJECT_SOURCES ${QGuideArith_DIR}/*.cpp ${QGuideArith_DIR}/*.h
${QGuideArith_DIR}/*.ui
${QGuideArith_DIR}/*.qrc
${QGuideArith_DIR}/*.rc
${CMAKE_SOURCE_DIR}/QGuideArithStudio/src/Project/*.cpp
${TS_FILES})
# 生成可执行文件
add_executable(QGuideArith ${PROJECT_SOURCES})
# 可执行文件输出路径
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/Bin)
# 关闭控制台
set_target_properties(QGuideArith PROPERTIES WIN32_EXECUTABLE TRUE)
# 链接模块
target_link_libraries(QGuideArith PRIVATE
${LIB_TRACKER} # 标准新跟踪器NeoTracker
${LIB_Arith_AIDET_NAME} # ai检测
${LIB_Arith_AITRK_NAME} # ai跟踪
${OpenCV_LIBS} # opencv
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Gui
Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::PrintSupport
)
ENDIF(BUILD_ARITH_STUDIO)
configure_file(${SVMmodelsDIR}/scaled_fly_bird_train.model ${EXECUTABLE_OUTPUT_PATH}/scaled_fly_bird_train.model COPYONLY)