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.

162 lines
3.8 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.

# 公共头文件(放置在最前面,所有后面定义的模块才都能找到)
SET(ArithTrkPubInc ${CMAKE_SOURCE_DIR}/public_include)
include_directories(${ArithTrkPubInc}) #引入算法公共头文件
# 添加测试目录
add_subdirectory(tests)
IF(WIN32)
# 添加vot_test
add_subdirectory(vot_test)
# 添加Console test
add_subdirectory(console_test)
ELSE(WIN32)
# 添加vot_test默认关闭vot测试生产生成
# add_subdirectory(vot_test)
ENDIF(WIN32)
set(Common_DIR src/Common)
# 添加日志模块
set(LIB_LOGGER_DIR src/Log)
IF(WIN32)
set(LIB_LOGGER libLogger)
ELSE(WIN32)
set(LIB_LOGGER Logger)
ENDIF(WIN32)
add_subdirectory(${LIB_LOGGER_DIR})
# 全局引用日志头文件,便于使用
include_directories(${LIB_LOGGER_DIR})
# 添加红外检测器模块
set(LIB_DETECT_DIR src/Detect)
IF(WIN32)
set(LIB_DETECTOR libDetector)
ELSE(WIN32)
set(LIB_DETECTOR Detector)
ENDIF(WIN32)
add_subdirectory(${LIB_DETECT_DIR})
# 添加KCF模块
set(LIB_KCF_DIR src/KCF)
IF(WIN32)
set(LIB_GDKCF libKCFTracker)
ELSE(WIN32)
set(LIB_GDKCF KCFTracker)
ENDIF(WIN32)
add_subdirectory(${LIB_KCF_DIR})
# 添加Fast Match模块
set(LIB_FASTMATCH_DIR src/Matcher)
IF(WIN32)
set(LIB_GDFASTMATCHER libFastMatcher)
ELSE(WIN32)
set(LIB_GDFASTMATCHER FastMatcher)
ENDIF(WIN32)
add_subdirectory(${LIB_FASTMATCH_DIR})
# 添加TLD模块
set(LIB_TLD_DIR src/TLD)
IF(WIN32)
set(LIB_GDTLD libTLDTracker)
ELSE(WIN32)
set(LIB_GDTLD TLDTracker)
ENDIF(WIN32)
add_subdirectory(${LIB_TLD_DIR})
# 添加管道模块
set(LIB_PIPE_DIR src/PIPE)
IF(WIN32)
set(LIB_PIPE libMOT_PIPE)
ELSE(WIN32)
set(LIB_PIPE MOT_PIPE)
ENDIF(WIN32)
add_subdirectory(${LIB_PIPE_DIR})
# 添加SVM分类器(回归)模块
set(LIB_SVM_DIR src/SVM)
IF(WIN32)
set(LIB_SVM libSVM)
ELSE(WIN32)
set(LIB_SVM SVM)
ENDIF(WIN32)
add_subdirectory(${LIB_SVM_DIR})
set(ArithSrcDIR_MAIN "src") # 库源文件路径
# 获取编译时间
string(TIMESTAMP COMPILE_TIME 20%y_%m_%d-%H.%M.%S)
set(build_time ${COMPILE_TIME})
# 获取当前版本信息
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/Version.h.in ${CMAKE_CURRENT_SOURCE_DIR}/src/Version.h)
# 使用当前目录、Common目录源码构建
file(GLOB libsrcs ${ArithSrcDIR_MAIN}/*.cpp ${ArithSrcDIR_MAIN}/*.c ${ArithSrcDIR_MAIN}/*.h ${ArithSrcDIR_MAIN}/*.hpp)
file(GLOB CommonSrc ${Common_DIR}/*.cpp ${Common_DIR}/*.c ${Common_DIR}/*.h ${Common_DIR}/*.hpp ${ArithTrkPubInc}/*.h)
add_library(${LIB_TRACKER} SHARED ${libsrcs} ${CommonSrc}) # 构建算法库
# 设置包含路径
target_include_directories(${LIB_TRACKER} PUBLIC
${ArithTrkPubInc}
${ArithSrcDIR_MAIN}
${Common_DIR}
${LIB_SVM_DIR}
${LIB_DETECT_DIR}
${LIB_KCF_DIR}
${LIB_TLD_DIR}
${LIB_PIPE_DIR}
${LIB_FASTMATCH_DIR}
${LIB_LOGGER_DIR})
# 算法库链接
target_link_libraries(${LIB_TRACKER}
${LIB_DETECTOR} # 红外检测算法
${LIB_GDKCF} # KCF算法
${LIB_GDTLD} # TLD算法
${LIB_PIPE}
${LIB_GDFASTMATCHER}
${LIB_SVM}
${LIB_LOGGER}
${OpenCV_LIBS})
# # gcc编译器要求0警告
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
# 只导出指明的符号
add_definitions(-fvisibility=hidden)
# 警告:必须在如下编译器配置下编译通过
target_compile_options(${LIB_TRACKER} PRIVATE -Werror -Wreturn-type)
endif()
set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/Bin) # 输出算法库路径
# 安装
set(Install_DIR ${CMAKE_SOURCE_DIR}/install/${CMAKE_BUILD_TYPE}_${CMAKE_SYSTEM_PROCESSOR})
install(TARGETS ${LIB_TRACKER}
${LIB_DETECTOR} # 红外检测算法
${LIB_GDKCF} # KCF算法
${LIB_GDTLD} # TLD算法
${LIB_SVM}
${LIB_GDFASTMATCHER}
${LIB_PIPE} LIBRARY DESTINATION ${Install_DIR})
install(FILES ${ArithTrkPubInc}/*.h DESTINATION ${Install_DIR})
install(FILES ${ArithSrcDIR_MAIN}/NeoArithStandardDll.h DESTINATION ${Install_DIR})