# 公共头文件(放置在最前面,所有后面定义的模块才都能找到) 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})