# 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 )