Train_RFID_Linux/CMakeLists.txt

238 lines
7.0 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CMake lowest version requirement
cmake_minimum_required(VERSION 3.21)
# project information
project(train_RFID_Linux)
project(${PROJECT_NAME} VERSION 0.1 DESCRIPTION "RFID识别程序 Linux版")
add_definitions(-std=c++11)
add_definitions(-DAPI_EXPORTS)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE Debug)
option(CUDA_USE_STATIC_CUDA_RUNTIME OFF)
# Set target output directory
set(PROJECT_SRC_ROOT ${CMAKE_CURRENT_LIST_DIR}/)
set(CMAKE_MODULE_PATH ${PROJECT_SRC_ROOT}/CMake)
# 设置项目生成目录
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SRC_ROOT}/app)
# 设置调用库文件的位置
set(CMAKE_SKIP_BUILD_RPATH FALSE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
set(CMAKE_INSTALL_RPATH "./lib")
#
find_package(Threads REQUIRED)
# sftp上传
find_package(Libssh2)
# boost指定版本
set(BOOST_INCLUDEDIR /usr/local/include)
find_package(Boost 1.65.0 EXACT REQUIRED COMPONENTS system filesystem)
include_directories(${Boost_INCLUDE_DIRS})
message(STATUS "Using Boost ${Boost_VERSION}")
# opencv
#find_package(OpenCV REQUIRED)
#message(STATUS "Using OpenCV ${OpenCV_VERSION}")
# CUDA
#find_package(CUDA REQUIRED)
#message(STATUS "Using CUDA ${CUDA_VERSION}")
# 添加调试信息
set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -O0 -Wfatal-errors -pthread -w -g")
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -std=c++11 -O0 -Xcompiler -fPIC -g -w ${CUDA_GEN_CODE}")
# 设置库/头文件路径
set(SYS_USR_INCLUDE_DIR "/usr/include")
set(SYS_USR_LIB_DIR "/usr/lib")
set(SYS_USR_LOCAL_INCLUDE_DIR "/usr/local/include")
set(SYS_USR_LOCAL_LIB_DIR "/usr/local/lib")
# set(X86_LINUX_INCLUDE_DIR "/usr/include/x86_64-linux-gnu")
# set(X86_LINUX_LIB_DIR "/usr/lib/x86_64-linux-gnu")
set(X86_LINUX_INCLUDE_DIR "/usr/include/aarch64-linux-gnu")
set(X86_LINUX_INCLUDE_DIR "/usr/lib/aarch64-linux-gnu")
#OpenCV头文件及库文件
#set(OPENCV_INCLUDE_DIR ${SYS_USR_LOCAL_INCLUDE_DIR}/opencv4)
#set(OPENCV_LIB_DIR ${SYS_USR_LOCAL_LIB_DIR})
#CUDA头文件及库文件
#set(CUDA_DIR "/usr/local/cuda-11.7")
#set(CUDA_INCLUDE_DIR ${CUDA_DIR}/include)
#set(CUDA_LIB_DIR ${CUDA_DIR}/lib64)
#TensorRT头文件及库文件
#set(TENSORRT_INCLUDE_DIR ${X86_LINUX_INCLUDE_DIR}) #tensorrt的头文件在/usr/include/aarch64-linux-gnu下
#set(TENSORRT_LIB_DIR ${X86_LINUX_LIB_DIR}) #tensorrt的库文件在/usr/lib/aarch64-linux-gnu下
#ai_matrix
set(ai_matrix_Folder ${PROJECT_SRC_ROOT}/ai_matrix)
get_filename_component(ai_matrix_ABS_DIR ${ai_matrix_Folder} ABSOLUTE)
file(GLOB_RECURSE ai_matrix_SRC_FILES
${ai_matrix_ABS_DIR}/framework/*cpp
${ai_matrix_ABS_DIR}/myqueue/*cpp
${ai_matrix_ABS_DIR}/myshell/*cpp
${ai_matrix_ABS_DIR}/mylog/*cpp
${ai_matrix_ABS_DIR}/Utils/*cpp
${ai_matrix_ABS_DIR}/Http/*cpp
${ai_matrix_ABS_DIR}/Config/*cpp
)
include_directories(${ai_matrix_Folder})
include_directories(${ai_matrix_Folder}/framework)
include_directories(${ai_matrix_Folder}/myqueue)
include_directories(${ai_matrix_Folder}/myshell)
include_directories(${ai_matrix_Folder}/mylog)
include_directories(${ai_matrix_Folder}/Utils)
include_directories(${ai_matrix_Folder}/Http)
include_directories(${ai_matrix_Folder}/Config)
# DealRfidEngine
include_directories(${PROJECT_SRC_ROOT}/engine/DealRfidEngine)
aux_source_directory(${PROJECT_SRC_ROOT}/engine/DealRfidEngine DealRfidEngine_SRC)
# GetRfidEngine
include_directories(${PROJECT_SRC_ROOT}/engine/GetRfidEngine)
aux_source_directory(${PROJECT_SRC_ROOT}/engine/GetRfidEngine GetRfidEngine_SRC)
# HttpEngine
include_directories(${PROJECT_SRC_ROOT}/engine/HttpEngine)
aux_source_directory(${PROJECT_SRC_ROOT}/engine/HttpEngine HttpEngine_SRC)
# SaveResultEngine
include_directories(${PROJECT_SRC_ROOT}/engine/SaveResultEngine)
aux_source_directory(${PROJECT_SRC_ROOT}/engine/SaveResultEngine SaveResultEngine_SRC)
# SaveRfidEngine
include_directories(${PROJECT_SRC_ROOT}/engine/SaveRfidEngine)
aux_source_directory(${PROJECT_SRC_ROOT}/engine/SaveRfidEngine SaveRfidEngine_SRC)
# VideoAuxiliaryEngine
include_directories(${PROJECT_SRC_ROOT}/engine/VideoAuxiliaryEngine)
aux_source_directory(${PROJECT_SRC_ROOT}/engine/VideoAuxiliaryEngine VideoAuxiliaryEngine_SRC)
# 其他头文件
include_directories(
#base include
${PROJECT_SOURCE_DIR}/base/BlockingQueue
${PROJECT_SOURCE_DIR}/base/CBase64
${PROJECT_SOURCE_DIR}/base/CommandParser
${PROJECT_SOURCE_DIR}/base/CommonDataType
${PROJECT_SOURCE_DIR}/base/ConfigParser
${PROJECT_SOURCE_DIR}/base/ErrorCode
${PROJECT_SOURCE_DIR}/base/FileManager
${PROJECT_SOURCE_DIR}/base/Log
#code include
${PROJECT_SOURCE_DIR}/code/common
# ${PROJECT_SOURCE_DIR}/code/cuda_utils
# ${PROJECT_SOURCE_DIR}/code/model
# ${PROJECT_SOURCE_DIR}/code/preprocess
# ${PROJECT_SOURCE_DIR}/code/inference
# ${PROJECT_SOURCE_DIR}/code/postprocess
${PROJECT_SOURCE_DIR}/code/BaseSocket
${PROJECT_SOURCE_DIR}/code/BaseComPort
#third party include
# ${CUDA_INCLUDE_DIR}
# ${TENSORRT_INCLUDE_DIR}
# ${OpenCV_DIR}
${X86_LINUX_INCLUDE_DIR}
${SYS_USR_LOCAL_INCLUDE_DIR}
)
# 设置链接库路径
link_directories(${SYS_USR_LOCAL_LIB_DIR}
${X86_LINUX_LIB_DIR}
# ${OPENCV_LIB_DIR}
# ${CUDA_LIB_DIR}
# ${TENSORRT_LIB_DIR}
)
# 源文件
file(
GLOB_RECURSE SRCS_LISTS
${ai_matrix_SRC_FILES}
#base src
${PROJECT_SOURCE_DIR}/base/CommandParser/*.cpp
${PROJECT_SOURCE_DIR}/base/ConfigParser/*.cpp
${PROJECT_SOURCE_DIR}/base/ErrorCode/*.cpp
${PROJECT_SOURCE_DIR}/base/FileManager/*.cpp
${PROJECT_SOURCE_DIR}/base/Log/*.cpp
#code src
${PROJECT_SOURCE_DIR}/code/common/*.cpp
# ${PROJECT_SOURCE_DIR}/code/cuda_utils/*.cpp
# ${PROJECT_SOURCE_DIR}/code/preprocess/*.cu
# ${PROJECT_SOURCE_DIR}/code/inference/*.cu
# ${PROJECT_SOURCE_DIR}/code/postprocess/*.cpp
${PROJECT_SOURCE_DIR}/code/BaseSocket/*.cpp
${PROJECT_SOURCE_DIR}/code/BaseComPort/*.cpp
# engine
${DealRfidEngine_SRC}
${GetRfidEngine_SRC}
${HttpEngine_SRC}
${SaveResultEngine_SRC}
${SaveRfidEngine_SRC}
${VideoAuxiliaryEngine_SRC}
)
# 服务端
add_executable(${PROJECT_NAME}
${PROJECT_SRC_ROOT}/main.cpp
${SRCS_LISTS}
)
# TensorRT
#target_link_libraries(
# ${PROJECT_NAME}
# nvinfer
# nvonnxparser
# nvcaffe_parser
# nvinfer_plugin
#)
target_link_libraries(
${PROJECT_NAME}
${Boost_LIBRARIES}
# ${CUDA_LIBRARIES}
# ${OpenCV_LIBS}
${_REFLECTION}
# FFmpeg
avformat
avcodec
avutil
avfilter
swresample
swscale
postproc
rt
dl
pthread
yaml-cpp
https_sn
jsoncpp
curl
ssh2
crypto
-Wl,-z,relro,-z,now,-z,noexecstack -pie -s
)