ffmpeg 부를 때 무조건 extern c 하기...

This commit is contained in:
2025-08-29 05:44:56 +09:00
parent a2821394bd
commit 51a49a4470
2 changed files with 22 additions and 5 deletions

View File

@@ -14,11 +14,11 @@ if(WIN32)
set(OPENSSL_INCLUDE_DIR "${OPENSSL_ROOT_DIR}/include")
if(CMAKE_BUILD_TYPE STREQUAL Debug)
set(OPENSSL_CRYPTO_LIBRARY "${OPENSSL_ROOT_DIR}/lib/VC/x64/MTd/libcrypto.lib")
set(OPENSSL_SSL_LIBRARY "${OPENSSL_ROOT_DIR}/lib/VC/x64/MTd/libssl.lib")
set(OPENSSL_CRYPTO_LIBRARY "${OPENSSL_ROOT_DIR}/lib/VC/x64/MDd/libcrypto.lib")
set(OPENSSL_SSL_LIBRARY "${OPENSSL_ROOT_DIR}/lib/VC/x64/MDd/libssl.lib")
else()
set(OPENSSL_CRYPTO_LIBRARY "${OPENSSL_ROOT_DIR}/lib/VC/x64/MT/libcrypto.lib")
set(OPENSSL_SSL_LIBRARY "${OPENSSL_ROOT_DIR}/lib/VC/x64/MT/libssl.lib")
set(OPENSSL_CRYPTO_LIBRARY "${OPENSSL_ROOT_DIR}/lib/VC/x64/MD/libcrypto.lib")
set(OPENSSL_SSL_LIBRARY "${OPENSSL_ROOT_DIR}/lib/VC/x64/MD/libssl.lib")
endif()
endif()
@@ -30,6 +30,9 @@ FetchContent_Declare(
Boost
URL "https://github.com/boostorg/boost/releases/download/boost-1.89.0/boost-1.89.0-cmake.7z"
DOWNLOAD_EXTRACT_TIMESTAMP ON
CMAKE_ARGS
-DBOOST_USE_STATIC_LIBS=OFF # DLL 사용
-DBOOST_USE_STATIC_RUNTIME=OFF # /MD, /MDd 사용
)
message(STATUS "Fetching and making available Boost...")
FetchContent_MakeAvailable(Boost)
@@ -74,9 +77,13 @@ set(FFMPEG_LIBRARY_PATH ${ffmpeg_SOURCE_DIR}/${FFMPEG_LIB_DIR})
set(FFMPEG_INCLUDE_PATH ${ffmpeg_SOURCE_DIR}/${FFMPEG_INCLUDE_DIR})
find_library(AVCODEC_LIBRARY NAMES avcodec PATHS ${FFMPEG_LIBRARY_PATH} NO_DEFAULT_PATH)
message(STATUS "AVCODEC_LIBRARY = ${AVCODEC_LIBRARY}")
find_library(AVFORMAT_LIBRARY NAMES avformat PATHS ${FFMPEG_LIBRARY_PATH} NO_DEFAULT_PATH)
message(STATUS "AVFORMAT_LIBRARY = ${AVFORMAT_LIBRARY}")
find_library(AVUTIL_LIBRARY NAMES avutil PATHS ${FFMPEG_LIBRARY_PATH} NO_DEFAULT_PATH)
message(STATUS "AVUTIL_LIBRARY = ${AVUTIL_LIBRARY}")
find_library(SWSCALE_LIBRARY NAMES swscale PATHS ${FFMPEG_LIBRARY_PATH} NO_DEFAULT_PATH)
message(STATUS "SWSCALE_LIBRARY = ${SWSCALE_LIBRARY}")
if(NOT AVCODEC_LIBRARY OR NOT AVFORMAT_LIBRARY OR NOT AVUTIL_LIBRARY)
message(FATAL_ERROR "FFmpeg 라이브러리를 찾을 수 없습니다. 다운로드 경로를 확인해주세요.")
@@ -108,9 +115,9 @@ target_link_libraries(${BOT_NAME} PRIVATE Boost::log)
target_link_libraries(${BOT_NAME} PRIVATE Boost::beast)
target_link_libraries(${BOT_NAME} PRIVATE OpenSSL::Crypto)
target_link_libraries(${BOT_NAME} PRIVATE OpenSSL::SSL)
target_link_libraries(${BOT_NAME} PRIVATE ${AVUTIL_LIBRARY})
target_link_libraries(${BOT_NAME} PRIVATE ${AVCODEC_LIBRARY})
target_link_libraries(${BOT_NAME} PRIVATE ${AVFORMAT_LIBRARY})
target_link_libraries(${BOT_NAME} PRIVATE ${AVUTIL_LIBRARY})
target_link_libraries(${BOT_NAME} PRIVATE ${SWSCALE_LIBRARY})
if(WIN32)
@@ -142,4 +149,11 @@ add_custom_command(TARGET ${BOT_NAME} POST_BUILD
"$<TARGET_FILE_DIR:Boost::process>"
"$<TARGET_FILE_DIR:${BOT_NAME}>"
COMMENT "Copying Boost.Process DLL/so files to output directory"
)
add_custom_command(TARGET ${BOT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
"${CMAKE_BINARY_DIR}/${FFMPEG_ARCHIVE_NAME}/bin"
"$<TARGET_FILE_DIR:${BOT_NAME}>"
COMMENT "Copying FFMpeg_AVCODEC DLL/so files to output directory"
)

View File

@@ -2,9 +2,12 @@
#include <boost/process.hpp>
#include <boost/beast/http.hpp>
#include <boost/beast/ssl.hpp>
extern "C" {
#include <libavformat/avformat.h>
}
#include <iostream>
int main(int argc, char* argv[]) {
std::cout << "FFmpeg version: " << av_version_info() << std::endl;
return 0;
}