Files
ANSCORE/modules/ANSCV/CMakeLists.txt

123 lines
4.5 KiB
CMake

# ANSCV — Computer Vision / Media DLL (video capture, RTSP, FFmpeg)
file(GLOB ANSCV_HEADERS "*.h")
file(GLOB ANSCV_SOURCES "*.cpp")
# Exclude old VideoPlayer.cpp — superseded by MediaClient/media/video_player.cpp
list(REMOVE_ITEM ANSCV_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/VideoPlayer.cpp")
# MediaClient sources compiled into ANSCV (from original vcxproj)
set(MEDIACLIENT_SOURCES
${CMAKE_SOURCE_DIR}/MediaClient/media/audio_capture.cpp
${CMAKE_SOURCE_DIR}/MediaClient/media/audio_capture_win.cpp
${CMAKE_SOURCE_DIR}/MediaClient/media/audio_decoder.cpp
${CMAKE_SOURCE_DIR}/MediaClient/media/audio_encoder.cpp
${CMAKE_SOURCE_DIR}/MediaClient/media/audio_play.cpp
${CMAKE_SOURCE_DIR}/MediaClient/media/audio_play_win.cpp
${CMAKE_SOURCE_DIR}/MediaClient/media/avcodec_mutex.cpp
${CMAKE_SOURCE_DIR}/MediaClient/media/avi_write.cpp
${CMAKE_SOURCE_DIR}/MediaClient/media/file_player.cpp
${CMAKE_SOURCE_DIR}/MediaClient/media/http_flv_player.cpp
${CMAKE_SOURCE_DIR}/MediaClient/media/http_mjpeg_player.cpp
${CMAKE_SOURCE_DIR}/MediaClient/media/media_codec.cpp
${CMAKE_SOURCE_DIR}/MediaClient/media/media_parse.cpp
${CMAKE_SOURCE_DIR}/MediaClient/media/media_util.cpp
${CMAKE_SOURCE_DIR}/MediaClient/media/rtmp_player.cpp
${CMAKE_SOURCE_DIR}/MediaClient/media/rtsp_player.cpp
${CMAKE_SOURCE_DIR}/MediaClient/media/srt_player.cpp
${CMAKE_SOURCE_DIR}/MediaClient/media/video_decoder.cpp
${CMAKE_SOURCE_DIR}/MediaClient/media/video_player.cpp
${CMAKE_SOURCE_DIR}/MediaClient/rtp/h264_rtp_rx.cpp
${CMAKE_SOURCE_DIR}/MediaClient/rtp/h264_util.cpp
${CMAKE_SOURCE_DIR}/MediaClient/rtp/h265_rtp_rx.cpp
${CMAKE_SOURCE_DIR}/MediaClient/rtp/h265_util.cpp
${CMAKE_SOURCE_DIR}/MediaClient/rtp/mjpeg_rtp_rx.cpp
${CMAKE_SOURCE_DIR}/MediaClient/rtp/mjpeg_tables.cpp
${CMAKE_SOURCE_DIR}/MediaClient/rtp/ts_parser.cpp
${CMAKE_SOURCE_DIR}/MediaClient/rtsp/rtsp_backchannel.cpp
${CMAKE_SOURCE_DIR}/MediaClient/rtsp/rtsp_cln.cpp
)
add_library(ANSCV SHARED ${ANSCV_HEADERS} ${ANSCV_SOURCES} ${MEDIACLIENT_SOURCES})
# MediaClient sources skip precompiled headers (they don't include ANSCV's pch.h)
set_source_files_properties(${MEDIACLIENT_SOURCES} PROPERTIES SKIP_PRECOMPILE_HEADERS ON)
target_include_directories(ANSCV PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
)
# MediaClient includes (referenced from original ANLS)
target_include_directories(ANSCV PRIVATE
${CMAKE_SOURCE_DIR}/MediaClient
${CMAKE_SOURCE_DIR}/MediaClient/media
${CMAKE_SOURCE_DIR}/MediaClient/rtsp
${CMAKE_SOURCE_DIR}/MediaClient/rtp
${CMAKE_SOURCE_DIR}/MediaClient/http
${CMAKE_SOURCE_DIR}/MediaClient/directx
${CMAKE_SOURCE_DIR}/MediaClient/directx/include
${CMAKE_SOURCE_DIR}/MediaClient/ffmpeg/include
${CMAKE_SOURCE_DIR}/MediaClient/openssl/include
${CMAKE_SOURCE_DIR}/MediaClient/libsrt/include
${CMAKE_SOURCE_DIR}/MediaClient/bm
${CMAKE_SOURCE_DIR}/MediaClient/rtmp
${CMAKE_SOURCE_DIR}/MediaClient/librtmp
${CMAKE_SOURCE_DIR}/MediaClient/srt
${ANSLIBS_DIR}/nlohmann
${SHARED_INCLUDE_DIR}
)
target_link_libraries(ANSCV
PRIVATE ANSLicensingSystem
PRIVATE labview
PRIVATE spdlog_dep
PRIVATE ANSLibsLoader
PRIVATE opencv
PRIVATE ffmpeg
PRIVATE turbojpeg
PRIVATE zxing
PRIVATE zlib_dep
PRIVATE CUDA::cudart_static
PRIVATE CUDA::cublasLt
PRIVATE CUDA::nvjpeg
)
# Platform-specific libs
if(WIN32)
target_link_directories(ANSCV PRIVATE
${CMAKE_SOURCE_DIR}/MediaClient/directx/lib/x64
${CMAKE_SOURCE_DIR}/MediaClient/openssl/lib/x64
${CMAKE_SOURCE_DIR}/MediaClient/libsrt/lib/x64
)
# Prebuilt MediaClient protocol libraries (built from MediaClient VS project)
target_link_directories(ANSCV PRIVATE "${ANSLIBS_DIR}/MediaClient/x64/Release")
target_link_libraries(ANSCV PRIVATE
RtspClientLibrary HttpFlvClientLibrary HttpMjpegClientLibrary
RtmpClientLibrary SrtClientLibrary
d3d9 d3dx9 dxva2
libcrypto libssl srt
${WIN_COMMON_LIBS}
)
else()
target_link_libraries(ANSCV PRIVATE ${UNIX_COMMON_LIBS})
endif()
target_compile_definitions(ANSCV PRIVATE
ANSCV_EXPORTS
_USRDLL
HT_STATIC
HTTPS
BACKCHANNEL
METADATA
REPLAY
OVER_HTTP
OVER_WEBSOCKET
NOMINMAX
)
if(WIN32)
target_compile_definitions(ANSCV PRIVATE UNICODE _UNICODE __WINDOWS_OS__)
else()
target_compile_definitions(ANSCV PRIVATE __LINUX_OS__)
endif()
target_precompile_headers(ANSCV PRIVATE pch.h)