mirror of
https://github.com/HappyTanuki/BumbleCee.git
synced 2025-10-26 01:45:15 +00:00
일단 빌드 되니 좋았쓰!
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -4,4 +4,6 @@ Music
|
|||||||
*.json
|
*.json
|
||||||
yt-dlp
|
yt-dlp
|
||||||
ffmpeg
|
ffmpeg
|
||||||
password
|
password
|
||||||
|
.vs
|
||||||
|
out
|
||||||
160
CMakeLists.txt
160
CMakeLists.txt
@@ -1,35 +1,145 @@
|
|||||||
cmake_minimum_required (VERSION 3.6)
|
cmake_minimum_required (VERSION 3.16)
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(include . ${Boost_INCLUDE_DIR})
|
|
||||||
|
|
||||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
|
||||||
set(BOT_NAME "BumbleCee")
|
set(BOT_NAME "BumbleCee")
|
||||||
|
project(${BOT_NAME} LANGUAGES CXX)
|
||||||
project(${BOT_NAME})
|
|
||||||
aux_source_directory("src" coresrc)
|
|
||||||
aux_source_directory("src/Audio" commands)
|
|
||||||
aux_source_directory("src/Commands" commands)
|
|
||||||
aux_source_directory("src/Queue" settings)
|
|
||||||
aux_source_directory("src/Settings" settings)
|
|
||||||
aux_source_directory("src/Utils" settings)
|
|
||||||
add_executable(${BOT_NAME} ${coresrc} ${commands} ${settings})
|
|
||||||
|
|
||||||
set(CMAKE_BUILD_TYPE Debug)
|
set(CMAKE_BUILD_TYPE Debug)
|
||||||
set(CMAKE_CXX_STANDARD 20)
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
|
|
||||||
set( Boost_USE_STATIC_LIBS ON )
|
set(BOOST_EXCLUDE_LIBRARIES nowide)
|
||||||
find_package(Boost REQUIRED)
|
|
||||||
|
|
||||||
target_include_directories(${BOT_NAME} PUBLIC
|
if(WIN32)
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/include
|
set(OPENSSL_ROOT_DIR "C:/Program Files/OpenSSL-Win64")
|
||||||
/usr/include/opus
|
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")
|
||||||
|
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")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package(OpenSSL REQUIRED)
|
||||||
|
|
||||||
|
include(FetchContent)
|
||||||
|
|
||||||
|
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
|
||||||
|
)
|
||||||
|
message(STATUS "Fetching and making available Boost...")
|
||||||
|
FetchContent_MakeAvailable(Boost)
|
||||||
|
|
||||||
|
FetchContent_Declare(
|
||||||
|
dpp
|
||||||
|
GIT_REPOSITORY "https://github.com/brainboxdotcc/DPP.git"
|
||||||
|
GIT_TAG "v10.1.3"
|
||||||
|
GIT_SHALLOW ON
|
||||||
|
CMAKE_ARGS -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} -DCMAKE_CXX_STANDARD_REQUIRED=ON
|
||||||
|
)
|
||||||
|
message(STATUS "Fetching and making available dpp...")
|
||||||
|
FetchContent_MakeAvailable(dpp)
|
||||||
|
|
||||||
|
# -------------------------------------------------------------
|
||||||
|
# 플랫폼별 FFmpeg 바이너리 다운로드 및 링크
|
||||||
|
# -------------------------------------------------------------
|
||||||
|
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
|
||||||
|
set(FFMPEG_URL "https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl-shared.zip")
|
||||||
|
set(FFMPEG_ARCHIVE_NAME "ffmpeg-windows")
|
||||||
|
set(FFMPEG_LIB_DIR "lib")
|
||||||
|
set(FFMPEG_INCLUDE_DIR "include")
|
||||||
|
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
|
||||||
|
set(FFMPEG_URL "https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-linux64-lgpl-shared.tar.xz")
|
||||||
|
set(FFMPEG_ARCHIVE_NAME "ffmpeg-linux")
|
||||||
|
set(FFMPEG_LIB_DIR "lib")
|
||||||
|
set(FFMPEG_INCLUDE_DIR "include")
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Unsupported platform for FFmpeg precompiled binaries.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
FetchContent_Declare(
|
||||||
|
ffmpeg
|
||||||
|
URL ${FFMPEG_URL}
|
||||||
|
DOWNLOAD_EXTRACT_TIMESTAMP ON
|
||||||
|
SOURCE_DIR ${CMAKE_BINARY_DIR}/${FFMPEG_ARCHIVE_NAME}
|
||||||
|
)
|
||||||
|
message(STATUS "Fetching and making available ffmpeg...")
|
||||||
|
FetchContent_MakeAvailable(ffmpeg)
|
||||||
|
|
||||||
|
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)
|
||||||
|
find_library(AVFORMAT_LIBRARY NAMES avformat PATHS ${FFMPEG_LIBRARY_PATH} NO_DEFAULT_PATH)
|
||||||
|
find_library(AVUTIL_LIBRARY NAMES avutil PATHS ${FFMPEG_LIBRARY_PATH} NO_DEFAULT_PATH)
|
||||||
|
find_library(SWSCALE_LIBRARY NAMES swscale PATHS ${FFMPEG_LIBRARY_PATH} NO_DEFAULT_PATH)
|
||||||
|
|
||||||
|
if(NOT AVCODEC_LIBRARY OR NOT AVFORMAT_LIBRARY OR NOT AVUTIL_LIBRARY)
|
||||||
|
message(FATAL_ERROR "FFmpeg 라이브러리를 찾을 수 없습니다. 다운로드 경로를 확인해주세요.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
#file(GLOB_RECURSE CORES "src/*.cpp" "src/*.cxx" "src/*.cc")
|
||||||
|
#file(GLOB_RECURSE AUDIO_SOURCES "src/Audio/*.cpp" "src/Audio/*.cxx" "src/Audio/*.cc")
|
||||||
|
#file(GLOB_RECURSE COMMANDS_SOURCES "src/Commands/*.cpp" "src/Commands/*.cxx" "src/Commands/*.cc")
|
||||||
|
#file(GLOB_RECURSE QUEUE_SOURCES "src/Queue/*.cpp" "src/Queue/*.cxx" "src/Queue/*.cc")
|
||||||
|
#file(GLOB_RECURSE SETTINGS_SOURCES "src/Settings/*.cpp" "src/Settings/*.cxx" "src/Settings/*.cc")
|
||||||
|
#file(GLOB_RECURSE UTILS_SOURCES "src/Utils/*.cpp" "src/Utils/*.cxx" "src/Utils/*.cc")
|
||||||
|
|
||||||
|
# Combine all found source files into a single list
|
||||||
|
#set(ALL_SOURCE_FILES
|
||||||
|
# ${CORES}
|
||||||
|
# ${AUDIO_SOURCES}
|
||||||
|
# ${COMMANDS_SOURCES}
|
||||||
|
# ${QUEUE_SOURCES}
|
||||||
|
# ${SETTINGS_SOURCES}
|
||||||
|
# ${UTILS_SOURCES}
|
||||||
|
#)
|
||||||
|
|
||||||
|
add_executable(${BOT_NAME} src/main.cpp)
|
||||||
|
|
||||||
|
target_link_libraries(${BOT_NAME} PRIVATE dpp)
|
||||||
|
target_link_libraries(${BOT_NAME} PRIVATE Boost::filesystem)
|
||||||
|
target_link_libraries(${BOT_NAME} PRIVATE Boost::process)
|
||||||
|
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 ${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)
|
||||||
|
target_link_libraries(${BOT_NAME} PRIVATE ws2_32)
|
||||||
|
endif()
|
||||||
|
if(UNIX AND NOT APPLE AND CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||||
|
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||||
|
BUILD_WITH_INSTALL_RPATH TRUE
|
||||||
|
INSTALL_RPATH "$ORIGIN"
|
||||||
|
SKIP_BUILD_RPATH FALSE
|
||||||
|
BUILD_RPATH "$ORIGIN"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_include_directories(${BOT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||||
|
|
||||||
|
target_include_directories(${BOT_NAME} PRIVATE ${OpenSSL_INCLUDE_DIRS})
|
||||||
|
target_include_directories(${BOT_NAME} PRIVATE ${FFMPEG_INCLUDE_PATH})
|
||||||
|
|
||||||
|
add_custom_command(TARGET ${BOT_NAME} POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||||
|
"$<TARGET_FILE_DIR:Boost::filesystem>"
|
||||||
|
"$<TARGET_FILE_DIR:${BOT_NAME}>"
|
||||||
|
COMMENT "Copying Boost.Filesystem DLL/so files to output directory"
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(${BOT_NAME}
|
add_custom_command(TARGET ${BOT_NAME} POST_BUILD
|
||||||
dpp
|
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||||
opus
|
"$<TARGET_FILE_DIR:Boost::process>"
|
||||||
ogg
|
"$<TARGET_FILE_DIR:${BOT_NAME}>"
|
||||||
oggz
|
COMMENT "Copying Boost.Process DLL/so files to output directory"
|
||||||
${Boost_LIBRARIES}
|
|
||||||
)
|
)
|
||||||
@@ -1,9 +1,10 @@
|
|||||||
|
#include <winsock2.h>
|
||||||
|
#include <boost/process.hpp>
|
||||||
|
#include <boost/beast/http.hpp>
|
||||||
|
#include <boost/beast/ssl.hpp>
|
||||||
|
#include <libavformat/avformat.h>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <BumbleBee.hpp>
|
|
||||||
#include <thread>
|
|
||||||
|
|
||||||
int main(int argc, char* argv[]) {
|
int main(int argc, char* argv[]) {
|
||||||
bumbleBee::BumbleBee bot;
|
|
||||||
bot.start();
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user