| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- cmake_minimum_required(VERSION 3.16)
- project(AV_Framework)
- # 设置C++标准
- set(CMAKE_CXX_STANDARD 17)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- # 设置编译选项
- if(MSVC)
- add_compile_options(/W3)
- else()
- add_compile_options(-Wall -Wextra)
- endif()
- # 查找线程库
- find_package(Threads REQUIRED)
- # 查找FFmpeg库
- find_package(PkgConfig REQUIRED)
- pkg_check_modules(FFMPEG REQUIRED
- libavcodec
- libavformat
- libavutil
- libswscale
- libswresample
- )
- # 基础库源文件
- set(BASE_SOURCES
- code/base/logger.cpp
- code/base/media_thread_base.cpp
- code/base/media_common.cpp
- )
- # 基础库头文件
- set(BASE_HEADERS
- code/base/types.h
- code/base/logger.h
- code/base/media_thread_base.h
- code/base/media_common.h
- )
- # 编解码库源文件
- set(CODEC_SOURCES
- code/codec/codec_abstract_codec.cpp
- code/codec/codec_video_encoder.cpp
- code/codec/codec_audio_encoder.cpp
- )
- # 编解码库头文件
- set(CODEC_HEADERS
- code/codec/codec_abstract_codec.h
- code/codec/codec_video_encoder.h
- code/codec/codec_audio_encoder.h
- )
- # 创建基础库
- add_library(av_base STATIC ${BASE_SOURCES} ${BASE_HEADERS})
- target_include_directories(av_base PUBLIC .)
- target_link_libraries(av_base PUBLIC Threads::Threads)
- # 创建编解码库
- add_library(av_codec STATIC ${CODEC_SOURCES} ${CODEC_HEADERS})
- target_include_directories(av_codec PUBLIC . ${FFMPEG_INCLUDE_DIRS})
- target_link_libraries(av_codec PUBLIC av_base ${FFMPEG_LIBRARIES})
- target_compile_options(av_codec PRIVATE ${FFMPEG_CFLAGS_OTHER})
- # 创建完整的AV库
- add_library(av_framework STATIC)
- target_link_libraries(av_framework PUBLIC av_base av_codec)
- # 测试程序
- add_executable(test_basic test_basic.cpp)
- target_link_libraries(test_basic av_base)
- # 编解码测试程序
- add_executable(test_codec test_codec.cpp)
- target_link_libraries(test_codec av_framework)
- # 设置输出目录
- set_target_properties(test_basic test_codec PROPERTIES
- RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
- )
- # 如果是Windows,复制运行时库
- if(WIN32)
- set_target_properties(test_basic test_codec PROPERTIES
- VS_DEBUGGER_WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/bin
- )
- endif()
- # 安装规则
- install(TARGETS av_framework av_base av_codec
- ARCHIVE DESTINATION lib
- LIBRARY DESTINATION lib
- RUNTIME DESTINATION bin
- )
- install(FILES ${BASE_HEADERS}
- DESTINATION include/av/base
- )
- install(FILES ${CODEC_HEADERS}
- DESTINATION include/av/codec
- )
|