cmake_minimum_required(VERSION 3.16) project(bytetrack-counter LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) find_package(OpenCV REQUIRED COMPONENTS core imgproc videoio highgui imgcodecs) set(Eigen3_DIR /usr/share/eigen3/cmake) find_package(Eigen3 REQUIRED NO_MODULE) find_package(SQLite3 REQUIRED) option(HAS_RKNN "Build with RKNN NPU support" ON) if(HAS_RKNN) add_definitions(-DHAS_RKNN) include_directories(/usr/local/include/rknn) set(HAS_RKNN_VAL 1) else() set(HAS_RKNN_VAL 0) endif() execute_process( COMMAND git rev-parse --short=8 HEAD WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE GIT_COMMIT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) if(NOT GIT_COMMIT) set(GIT_COMMIT "unknown") endif() execute_process( COMMAND git rev-parse --abbrev-ref HEAD WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE GIT_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) if(NOT GIT_BRANCH) set(GIT_BRANCH "unknown") endif() execute_process( COMMAND git describe --tags --exact-match 2>/dev/null || echo "" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE GIT_TAG OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) if(NOT GIT_TAG) set(GIT_TAG "") endif() string(TIMESTAMP BUILD_DATE "%Y-%m-%d") string(TIMESTAMP BUILD_TIME "%H:%M:%S") string(TIMESTAMP BUILD_YEAR "%Y") configure_file( ${CMAKE_SOURCE_DIR}/src/version.hpp.in ${CMAKE_BINARY_DIR}/version.hpp @ONLY ) set(SOURCES src/main.cpp src/kalman_filter.cpp src/bytetrack.cpp src/batch_store.cpp src/csv_logger.cpp src/rknn_yolo.cpp src/config.cpp src/drawing.cpp src/video_writer.cpp ) add_executable(bytetrack-counter ${SOURCES}) target_include_directories(bytetrack-counter PRIVATE ${OpenCV_INCLUDE_DIRS} ${EIGEN3_INCLUDE_DIR} ${SQLite3_INCLUDE_DIRS} src ${CMAKE_BINARY_DIR} ) target_link_libraries(bytetrack-counter ${OpenCV_LIBS} ${SQLite3_LIBRARIES} pthread ) if(HAS_RKNN) find_library(RKNN_LIB rknnrt PATHS /usr/lib /usr/local/lib) if(RKNN_LIB) target_link_libraries(bytetrack-counter ${RKNN_LIB}) else() message(WARNING "librknnrt not found — RKNN support disabled") endif() endif() install(TARGETS bytetrack-counter DESTINATION /opt/bytetrack-counter-cpp/bin)