...
This commit is contained in:
@@ -1,59 +1,65 @@
|
||||
cmake_minimum_required(VERSION 3.18.1)
|
||||
project("native_renderer")
|
||||
|
||||
cmake_minimum_required(VERSION 3.10.2)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
# --- 1. FFmpeg 빌드 스크립트 실행 ---
|
||||
# NOTE: 이 명령은 CMake 설정 단계에서 딱 한 번 실행되어 FFmpeg 라이브러리를 빌드합니다.
|
||||
# ffmpeg 폴더에 있는 build_ffmpeg.sh 스크립트를 실행합니다.
|
||||
execute_process(
|
||||
COMMAND sh ../../../../ffmpeg/build_ffmpeg.sh
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
RESULT_VARIABLE FFMPEG_BUILD_RESULT
|
||||
)
|
||||
|
||||
project(native_renderer)
|
||||
|
||||
# 기본 로그 및 안드로이드 라이브러리
|
||||
find_library(log-lib log)
|
||||
find_library(android-lib android)
|
||||
|
||||
# ABI에 따라 jniLibs 경로 지정 (예: arm64-v8a, armeabi-v7a 등)
|
||||
set(FFMPEG_LIB_DIR ${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI})
|
||||
message(STATUS "FFMPEG_LIB_DIR: ${FFMPEG_LIB_DIR}")
|
||||
if(NOT FFMPEG_BUILD_RESULT EQUAL 0)
|
||||
message(FATAL_ERROR "FFmpeg build script failed with exit code: ${FFMPEG_BUILD_RESULT}")
|
||||
endif()
|
||||
# --- 실행 끝 ---
|
||||
|
||||
|
||||
# FFmpeg 헤더 경로 추가
|
||||
include_directories(${FFMPEG_LIB_DIR}/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/include) # stb_image.h가 이 경로에 있다면
|
||||
# --- 2. 빌드된 라이브러리 참조 ---
|
||||
# NOTE: 이제 FFmpeg은 미리 빌드된 라이브러리(prebuilt)처럼 취급됩니다.
|
||||
# jniLibs 폴더 경로 설정
|
||||
set(JNI_LIBS_DIR ${CMAKE_SOURCE_DIR}/../../jniLibs/${ANDROID_ABI})
|
||||
|
||||
# FFmpeg 라이브러리들 임포트 선언 및 위치 지정
|
||||
# 헤더 파일 경로 추가
|
||||
include_directories(${JNI_LIBS_DIR}/include)
|
||||
|
||||
# 각 .so 파일을 IMPORTED 라이브러리로 추가
|
||||
add_library(avformat SHARED IMPORTED)
|
||||
set_target_properties(avformat PROPERTIES IMPORTED_LOCATION
|
||||
${FFMPEG_LIB_DIR}/libavformat.so)
|
||||
set_target_properties(avformat PROPERTIES IMPORTED_LOCATION ${JNI_LIBS_DIR}/libavformat.so)
|
||||
|
||||
add_library(avcodec SHARED IMPORTED)
|
||||
set_target_properties(avcodec PROPERTIES IMPORTED_LOCATION
|
||||
${FFMPEG_LIB_DIR}/libavcodec.so)
|
||||
set_target_properties(avcodec PROPERTIES IMPORTED_LOCATION ${JNI_LIBS_DIR}/libavcodec.so)
|
||||
|
||||
add_library(avutil SHARED IMPORTED)
|
||||
set_target_properties(avutil PROPERTIES IMPORTED_LOCATION
|
||||
${FFMPEG_LIB_DIR}/libavutil.so)
|
||||
set_target_properties(avutil PROPERTIES IMPORTED_LOCATION ${JNI_LIBS_DIR}/libavutil.so)
|
||||
|
||||
add_library(swscale SHARED IMPORTED)
|
||||
set_target_properties(swscale PROPERTIES IMPORTED_LOCATION
|
||||
${FFMPEG_LIB_DIR}/libswscale.so)
|
||||
set_target_properties(swscale PROPERTIES IMPORTED_LOCATION ${JNI_LIBS_DIR}/libswscale.so)
|
||||
|
||||
add_library(swresample SHARED IMPORTED)
|
||||
set_target_properties(swresample PROPERTIES IMPORTED_LOCATION
|
||||
${FFMPEG_LIB_DIR}/libswresample.so)
|
||||
set_target_properties(swresample PROPERTIES IMPORTED_LOCATION ${JNI_LIBS_DIR}/libswresample.so)
|
||||
|
||||
add_library(avfilter SHARED IMPORTED)
|
||||
set_target_properties(avfilter PROPERTIES IMPORTED_LOCATION
|
||||
${FFMPEG_LIB_DIR}/libavfilter.so)
|
||||
|
||||
# 네이티브 렌더러 라이브러리 빌드
|
||||
add_library(native_renderer SHARED native_renderer.cpp) # 실제 소스파일명 입력
|
||||
# --- 3. 네이티브 렌더러 라이브러리 빌드 및 링크 ---
|
||||
add_library(native_renderer SHARED
|
||||
native_renderer.cpp
|
||||
Renderer.cpp
|
||||
Preloader.cpp
|
||||
MediaAsset.cpp
|
||||
)
|
||||
|
||||
find_library(log-lib log)
|
||||
find_library(android-lib android)
|
||||
find_library(nativewindow-lib nativewindow)
|
||||
|
||||
# 링크할 라이브러리 지정
|
||||
target_link_libraries(native_renderer
|
||||
avformat
|
||||
avcodec
|
||||
avutil
|
||||
swscale
|
||||
swresample
|
||||
avfilter
|
||||
${log-lib}
|
||||
${android-lib}
|
||||
)
|
||||
${nativewindow-lib}
|
||||
)
|
||||
Reference in New Issue
Block a user