kunlang_video/CMakeLists.txt
2025-12-30 09:00:11 +08:00

65 lines
1.7 KiB
CMake

cmake_minimum_required(VERSION 3.10)
# 可配置的项目名称
set(APP_NAME "video_manager")
# 可配置的配置文件名
set(CONFIG_EXAMPLE_FILE "config.example.json")
set(CONFIG_FILE "config.json")
project(${APP_NAME})
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_compile_definitions(GLIB_DISABLE_DEPRECATION_WARNINGS)
# 输出目录
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../bin)
# GStreamer
find_package(PkgConfig REQUIRED)
pkg_check_modules(GSTREAMER REQUIRED gstreamer-1.0)
# include 路径
include_directories(
${CMAKE_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/third_party/include
${CMAKE_SOURCE_DIR}/third_party/include/paho_mqtt
${GSTREAMER_INCLUDE_DIRS}
)
# 源文件
file(GLOB SRC_FILES src/*.cpp)
# 生成可执行文件
add_executable(${APP_NAME} ${SRC_FILES})
# lib 路径
link_directories(
${GSTREAMER_LIBRARY_DIRS}
${CMAKE_SOURCE_DIR}/third_party/lib
)
# 链接库
target_link_libraries(${APP_NAME}
${GSTREAMER_LIBRARIES}
pthread
${CMAKE_SOURCE_DIR}/third_party/lib/libmp4v2.a
${CMAKE_SOURCE_DIR}/third_party/lib/libutil.a
${CMAKE_SOURCE_DIR}/third_party/lib/libpaho-mqttpp3.a
${CMAKE_SOURCE_DIR}/third_party/lib/libpaho-mqtt3a.a
${CMAKE_SOURCE_DIR}/third_party/lib/libpaho-mqtt3c.a
)
# 拷贝配置文件(仅在不存在时)
add_custom_command(TARGET ${APP_NAME} POST_BUILD
# 确保目标目录存在
COMMAND ${CMAKE_COMMAND} -E make_directory "$<TARGET_FILE_DIR:${APP_NAME}>"
# 复制配置文件(仅当源文件比目标文件新时)
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${CMAKE_SOURCE_DIR}/${CONFIG_EXAMPLE_FILE}"
"$<TARGET_FILE_DIR:${APP_NAME}>/${CONFIG_FILE}"
COMMENT "复制配置文件到输出目录"
)