mirror of
https://github.com/HappyTanuki/BumbleCee.git
synced 2025-10-25 09:25:59 +00:00
테스트 구조 완성, 코딩 스타일 교정 기능 추가 쓸데없는 설정파일들 정리
This commit is contained in:
8
.clang-format
Normal file
8
.clang-format
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Google C/C++ Code Style Settings
|
||||||
|
|
||||||
|
Language: Cpp
|
||||||
|
BasedOnStyle: Google
|
||||||
|
Standard: c++20
|
||||||
|
IndentWidth: 2
|
||||||
|
UseTab: Never
|
||||||
|
ColumnLimit: 80
|
||||||
10
.idea/.gitignore
generated
vendored
10
.idea/.gitignore
generated
vendored
@@ -1,10 +0,0 @@
|
|||||||
# Default ignored files
|
|
||||||
/shelf/
|
|
||||||
/workspace.xml
|
|
||||||
# Editor-based HTTP Client requests
|
|
||||||
/httpRequests/
|
|
||||||
# Environment-dependent path to Maven home directory
|
|
||||||
/mavenHomeManager.xml
|
|
||||||
# Datasource local storage ignored files
|
|
||||||
/dataSources/
|
|
||||||
/dataSources.local.xml
|
|
||||||
9
.idea/BumbleCee.iml
generated
9
.idea/BumbleCee.iml
generated
@@ -1,9 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module type="JAVA_MODULE" version="4">
|
|
||||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
|
||||||
<exclude-output />
|
|
||||||
<content url="file://$MODULE_DIR$" />
|
|
||||||
<orderEntry type="inheritedJdk" />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
</component>
|
|
||||||
</module>
|
|
||||||
6
.idea/misc.xml
generated
6
.idea/misc.xml
generated
@@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_23" default="true" project-jdk-name="openjdk-23" project-jdk-type="JavaSDK">
|
|
||||||
<output url="file://$PROJECT_DIR$/out" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
8
.idea/modules.xml
generated
8
.idea/modules.xml
generated
@@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectModuleManager">
|
|
||||||
<modules>
|
|
||||||
<module fileurl="file://$PROJECT_DIR$/.idea/BumbleCee.iml" filepath="$PROJECT_DIR$/.idea/BumbleCee.iml" />
|
|
||||||
</modules>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
6
.idea/vcs.xml
generated
6
.idea/vcs.xml
generated
@@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="VcsDirectoryMappings">
|
|
||||||
<mapping directory="" vcs="Git" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
19
.vscode/c_cpp_properties.json
vendored
19
.vscode/c_cpp_properties.json
vendored
@@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
"configurations": [
|
|
||||||
{
|
|
||||||
"name": "Linux",
|
|
||||||
"includePath": [
|
|
||||||
"${workspaceFolder}/**",
|
|
||||||
"${workspaceFolder}/include"
|
|
||||||
],
|
|
||||||
"defines": [
|
|
||||||
"DDPP_CORO=on"
|
|
||||||
],
|
|
||||||
"compilerPath": "/usr/bin/gcc",
|
|
||||||
"cStandard": "c17",
|
|
||||||
"cppStandard": "c++20",
|
|
||||||
"intelliSenseMode": "linux-gcc-x64"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"version": 4
|
|
||||||
}
|
|
||||||
51
.vscode/launch.json
vendored
51
.vscode/launch.json
vendored
@@ -1,29 +1,32 @@
|
|||||||
{
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"configurations": [
|
"configurations": [
|
||||||
{
|
{
|
||||||
"name": "Debug",
|
"name": "(gdb) Launch",
|
||||||
"type": "cppdbg",
|
"type": "cppdbg",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"program": "${workspaceFolder}/build/BumbleCee",
|
"program": "${workspaceFolder}/build/Debug Clang 18.1.3 x86_64-pc-linux-gnu/tests/${fileBasenameNoExtension}",
|
||||||
"stopAtEntry": false,
|
"args": [],
|
||||||
"cwd": "${workspaceFolder}",
|
"stopAtEntry": false,
|
||||||
"environment": [],
|
"cwd": "${fileDirname}",
|
||||||
"externalConsole": false,
|
"environment": [],
|
||||||
"MIMode": "gdb",
|
"externalConsole": false,
|
||||||
"setupCommands": [
|
"MIMode": "gdb",
|
||||||
{
|
"setupCommands": [
|
||||||
"description": "Enable pretty-printing for gdb",
|
{
|
||||||
"text": "-enable-pretty-printing",
|
"description": "Enable pretty-printing for gdb",
|
||||||
"ignoreFailures": true
|
"text": "-enable-pretty-printing",
|
||||||
},
|
"ignoreFailures": true
|
||||||
{
|
},
|
||||||
"description": "Set Disassembly Flavor to Intel",
|
{
|
||||||
"text": "-gdb-set disassembly-flavor intel",
|
"description": "Set Disassembly Flavor to Intel",
|
||||||
"ignoreFailures": true
|
"text": "-gdb-set disassembly-flavor intel",
|
||||||
}
|
"ignoreFailures": true
|
||||||
],
|
}
|
||||||
"preLaunchTask": "${defaultBuildTask}"
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
48
.vscode/settings.json
vendored
48
.vscode/settings.json
vendored
@@ -1,9 +1,16 @@
|
|||||||
{
|
{
|
||||||
"C_Cpp.default.compileCommands": "${workspaceFolder}/build/compile_commands.json",
|
"editor.rulers": [
|
||||||
|
{
|
||||||
|
"column": 80
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"cmake.generator": "Ninja",
|
||||||
"files.associations": {
|
"files.associations": {
|
||||||
"cctype": "cpp",
|
"cctype": "cpp",
|
||||||
"clocale": "cpp",
|
"clocale": "cpp",
|
||||||
"cmath": "cpp",
|
"cmath": "cpp",
|
||||||
|
"csetjmp": "cpp",
|
||||||
|
"csignal": "cpp",
|
||||||
"cstdarg": "cpp",
|
"cstdarg": "cpp",
|
||||||
"cstddef": "cpp",
|
"cstddef": "cpp",
|
||||||
"cstdio": "cpp",
|
"cstdio": "cpp",
|
||||||
@@ -12,37 +19,53 @@
|
|||||||
"ctime": "cpp",
|
"ctime": "cpp",
|
||||||
"cwchar": "cpp",
|
"cwchar": "cpp",
|
||||||
"cwctype": "cpp",
|
"cwctype": "cpp",
|
||||||
|
"any": "cpp",
|
||||||
"array": "cpp",
|
"array": "cpp",
|
||||||
"atomic": "cpp",
|
"atomic": "cpp",
|
||||||
|
"strstream": "cpp",
|
||||||
|
"barrier": "cpp",
|
||||||
"bit": "cpp",
|
"bit": "cpp",
|
||||||
"bitset": "cpp",
|
"bitset": "cpp",
|
||||||
|
"cfenv": "cpp",
|
||||||
"charconv": "cpp",
|
"charconv": "cpp",
|
||||||
"chrono": "cpp",
|
"chrono": "cpp",
|
||||||
|
"cinttypes": "cpp",
|
||||||
|
"codecvt": "cpp",
|
||||||
"compare": "cpp",
|
"compare": "cpp",
|
||||||
|
"complex": "cpp",
|
||||||
"concepts": "cpp",
|
"concepts": "cpp",
|
||||||
"condition_variable": "cpp",
|
"condition_variable": "cpp",
|
||||||
|
"coroutine": "cpp",
|
||||||
"cstdint": "cpp",
|
"cstdint": "cpp",
|
||||||
"deque": "cpp",
|
"deque": "cpp",
|
||||||
"forward_list": "cpp",
|
"forward_list": "cpp",
|
||||||
"list": "cpp",
|
"list": "cpp",
|
||||||
"map": "cpp",
|
"map": "cpp",
|
||||||
|
"set": "cpp",
|
||||||
"string": "cpp",
|
"string": "cpp",
|
||||||
"unordered_map": "cpp",
|
"unordered_map": "cpp",
|
||||||
|
"unordered_set": "cpp",
|
||||||
"vector": "cpp",
|
"vector": "cpp",
|
||||||
"exception": "cpp",
|
"exception": "cpp",
|
||||||
|
"expected": "cpp",
|
||||||
"algorithm": "cpp",
|
"algorithm": "cpp",
|
||||||
"functional": "cpp",
|
"functional": "cpp",
|
||||||
"iterator": "cpp",
|
"iterator": "cpp",
|
||||||
"memory": "cpp",
|
"memory": "cpp",
|
||||||
"memory_resource": "cpp",
|
"memory_resource": "cpp",
|
||||||
|
"numeric": "cpp",
|
||||||
"optional": "cpp",
|
"optional": "cpp",
|
||||||
"random": "cpp",
|
"random": "cpp",
|
||||||
"ratio": "cpp",
|
"ratio": "cpp",
|
||||||
|
"regex": "cpp",
|
||||||
|
"source_location": "cpp",
|
||||||
"string_view": "cpp",
|
"string_view": "cpp",
|
||||||
"system_error": "cpp",
|
"system_error": "cpp",
|
||||||
"tuple": "cpp",
|
"tuple": "cpp",
|
||||||
"type_traits": "cpp",
|
"type_traits": "cpp",
|
||||||
"utility": "cpp",
|
"utility": "cpp",
|
||||||
|
"rope": "cpp",
|
||||||
|
"slist": "cpp",
|
||||||
"format": "cpp",
|
"format": "cpp",
|
||||||
"fstream": "cpp",
|
"fstream": "cpp",
|
||||||
"future": "cpp",
|
"future": "cpp",
|
||||||
@@ -51,20 +74,39 @@
|
|||||||
"iosfwd": "cpp",
|
"iosfwd": "cpp",
|
||||||
"iostream": "cpp",
|
"iostream": "cpp",
|
||||||
"istream": "cpp",
|
"istream": "cpp",
|
||||||
|
"latch": "cpp",
|
||||||
"limits": "cpp",
|
"limits": "cpp",
|
||||||
"mutex": "cpp",
|
"mutex": "cpp",
|
||||||
"new": "cpp",
|
"new": "cpp",
|
||||||
|
"numbers": "cpp",
|
||||||
"ostream": "cpp",
|
"ostream": "cpp",
|
||||||
|
"ranges": "cpp",
|
||||||
|
"scoped_allocator": "cpp",
|
||||||
"semaphore": "cpp",
|
"semaphore": "cpp",
|
||||||
"shared_mutex": "cpp",
|
"shared_mutex": "cpp",
|
||||||
|
"span": "cpp",
|
||||||
|
"spanstream": "cpp",
|
||||||
"sstream": "cpp",
|
"sstream": "cpp",
|
||||||
|
"stacktrace": "cpp",
|
||||||
"stdexcept": "cpp",
|
"stdexcept": "cpp",
|
||||||
|
"stdfloat": "cpp",
|
||||||
"stop_token": "cpp",
|
"stop_token": "cpp",
|
||||||
"streambuf": "cpp",
|
"streambuf": "cpp",
|
||||||
|
"syncstream": "cpp",
|
||||||
"thread": "cpp",
|
"thread": "cpp",
|
||||||
|
"typeindex": "cpp",
|
||||||
"typeinfo": "cpp",
|
"typeinfo": "cpp",
|
||||||
|
"valarray": "cpp",
|
||||||
"variant": "cpp",
|
"variant": "cpp",
|
||||||
"__config": "cpp",
|
"__locale": "cpp",
|
||||||
"rope": "cpp"
|
"ios": "cpp",
|
||||||
|
"locale": "cpp",
|
||||||
|
"print": "cpp"
|
||||||
|
},
|
||||||
|
"files.exclude": {
|
||||||
|
"**/*.rpyc": true,
|
||||||
|
"**/*.rpa": true,
|
||||||
|
"**/*.rpymc": true,
|
||||||
|
"**/cache/": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
37
.vscode/tasks.json
vendored
37
.vscode/tasks.json
vendored
@@ -1,37 +0,0 @@
|
|||||||
{
|
|
||||||
|
|
||||||
"version": "2.0.0",
|
|
||||||
"tasks": [
|
|
||||||
{
|
|
||||||
"type": "cppbuild",
|
|
||||||
"label": "ninja",
|
|
||||||
"command": "ninja",
|
|
||||||
"args": [],
|
|
||||||
"options": {
|
|
||||||
"cwd": "${workspaceFolder}/build/"
|
|
||||||
},
|
|
||||||
"group": {
|
|
||||||
"kind": "build",
|
|
||||||
"isDefault": true
|
|
||||||
},
|
|
||||||
"dependsOn": ["cmake"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "shell",
|
|
||||||
"label": "cmake",
|
|
||||||
"command": "cmake",
|
|
||||||
"args": [
|
|
||||||
"..",
|
|
||||||
"-G",
|
|
||||||
"Ninja"
|
|
||||||
],
|
|
||||||
"options": {
|
|
||||||
"cwd": "${workspaceFolder}/build/"
|
|
||||||
},
|
|
||||||
"group": {
|
|
||||||
"kind": "build",
|
|
||||||
"isDefault": false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -2,12 +2,17 @@ cmake_minimum_required (VERSION 3.16)
|
|||||||
set(BOT_NAME "BumbleCee")
|
set(BOT_NAME "BumbleCee")
|
||||||
project(${BOT_NAME} LANGUAGES CXX)
|
project(${BOT_NAME} LANGUAGES CXX)
|
||||||
|
|
||||||
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(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
|
||||||
set(BOOST_EXCLUDE_LIBRARIES nowide)
|
set(BOOST_EXCLUDE_LIBRARIES nowide)
|
||||||
|
set(BUILD_TESTING ON)
|
||||||
|
|
||||||
|
set(DPP_BUILD_TEST OFF)
|
||||||
|
|
||||||
|
enable_testing()
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(OPENSSL_ROOT_DIR "C:/Program Files/OpenSSL-Win64")
|
set(OPENSSL_ROOT_DIR "C:/Program Files/OpenSSL-Win64")
|
||||||
@@ -26,14 +31,15 @@ find_package(OpenSSL REQUIRED)
|
|||||||
|
|
||||||
include(FetchContent)
|
include(FetchContent)
|
||||||
|
|
||||||
|
set(BUILD_SHARED_LIBS_OLD ${BUILD_SHARED_LIBS})
|
||||||
|
|
||||||
FetchContent_Declare(
|
FetchContent_Declare(
|
||||||
Boost
|
Boost
|
||||||
URL "https://github.com/boostorg/boost/releases/download/boost-1.89.0/boost-1.89.0-cmake.7z"
|
URL "https://github.com/boostorg/boost/releases/download/boost-1.89.0/boost-1.89.0-cmake.7z"
|
||||||
DOWNLOAD_EXTRACT_TIMESTAMP ON
|
DOWNLOAD_EXTRACT_TIMESTAMP ON
|
||||||
CMAKE_ARGS
|
EXCLUDE_FROM_ALL
|
||||||
-DBOOST_USE_STATIC_LIBS=ON
|
|
||||||
-DBOOST_USE_STATIC_RUNTIME=ON
|
|
||||||
)
|
)
|
||||||
|
set(BUILD_SHARED_LIBS OFF CACHE BOOL "Do not build SHARED libraries" FORCE)
|
||||||
message(STATUS "Fetching and making available Boost...")
|
message(STATUS "Fetching and making available Boost...")
|
||||||
FetchContent_MakeAvailable(Boost)
|
FetchContent_MakeAvailable(Boost)
|
||||||
|
|
||||||
@@ -42,11 +48,13 @@ FetchContent_Declare(
|
|||||||
GIT_REPOSITORY "https://github.com/brainboxdotcc/DPP.git"
|
GIT_REPOSITORY "https://github.com/brainboxdotcc/DPP.git"
|
||||||
GIT_TAG "v10.1.3"
|
GIT_TAG "v10.1.3"
|
||||||
GIT_SHALLOW ON
|
GIT_SHALLOW ON
|
||||||
CMAKE_ARGS -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} -DCMAKE_CXX_STANDARD_REQUIRED=ON
|
|
||||||
)
|
)
|
||||||
|
set(BUILD_SHARED_LIBS ON CACHE BOOL "Build SHARED libraries" FORCE)
|
||||||
message(STATUS "Fetching and making available dpp...")
|
message(STATUS "Fetching and making available dpp...")
|
||||||
FetchContent_MakeAvailable(dpp)
|
FetchContent_MakeAvailable(dpp)
|
||||||
|
|
||||||
|
set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_OLD} CACHE BOOL "Type of libraries to build" FORCE)
|
||||||
|
|
||||||
# -------------------------------------------------------------
|
# -------------------------------------------------------------
|
||||||
# 플랫폼별 FFmpeg 바이너리 다운로드 및 링크
|
# 플랫폼별 FFmpeg 바이너리 다운로드 및 링크
|
||||||
# -------------------------------------------------------------
|
# -------------------------------------------------------------
|
||||||
@@ -84,41 +92,42 @@ find_library(AVUTIL_LIBRARY NAMES avutil PATHS ${FFMPEG_LIBRARY_PATH} NO_DEFAULT
|
|||||||
message(STATUS "AVUTIL_LIBRARY = ${AVUTIL_LIBRARY}")
|
message(STATUS "AVUTIL_LIBRARY = ${AVUTIL_LIBRARY}")
|
||||||
find_library(SWSCALE_LIBRARY NAMES swscale PATHS ${FFMPEG_LIBRARY_PATH} NO_DEFAULT_PATH)
|
find_library(SWSCALE_LIBRARY NAMES swscale PATHS ${FFMPEG_LIBRARY_PATH} NO_DEFAULT_PATH)
|
||||||
message(STATUS "SWSCALE_LIBRARY = ${SWSCALE_LIBRARY}")
|
message(STATUS "SWSCALE_LIBRARY = ${SWSCALE_LIBRARY}")
|
||||||
|
find_library(SWRESAMPLE_LIBRARY NAMES swresample PATHS ${FFMPEG_LIBRARY_PATH} NO_DEFAULT_PATH)
|
||||||
|
message(STATUS "SWRESAMPLE_LIBRARY = ${SWRESAMPLE_LIBRARY}")
|
||||||
|
|
||||||
if(NOT AVCODEC_LIBRARY OR NOT AVFORMAT_LIBRARY OR NOT AVUTIL_LIBRARY)
|
if(NOT AVCODEC_LIBRARY OR NOT AVFORMAT_LIBRARY OR NOT AVUTIL_LIBRARY OR NOT SWRESAMPLE_LIBRARY)
|
||||||
message(FATAL_ERROR "FFmpeg 라이브러리를 찾을 수 없습니다. 다운로드 경로를 확인해주세요.")
|
message(FATAL_ERROR "FFmpeg 라이브러리를 찾을 수 없습니다. 다운로드 경로를 확인해주세요.")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
file(GLOB_RECURSE CORES "src/*.cpp" "src/*.cxx" "src/*.cc")
|
file(GLOB_RECURSE SOURCES "src/*.cpp" "src/*.cxx" "src/*.cc")
|
||||||
|
|
||||||
set(ALL_SOURCE_FILES
|
add_library(${BOT_NAME}_lib ${SOURCES})
|
||||||
${CORES}
|
|
||||||
${AUDIO_SOURCES}
|
|
||||||
${COMMANDS_SOURCES}
|
|
||||||
${QUEUE_SOURCES}
|
|
||||||
${SETTINGS_SOURCES}
|
|
||||||
${UTILS_SOURCES}
|
|
||||||
)
|
|
||||||
|
|
||||||
add_executable(${BOT_NAME} ${ALL_SOURCE_FILES})
|
target_include_directories(${BOT_NAME}_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||||
|
|
||||||
target_link_libraries(${BOT_NAME} PRIVATE dpp)
|
target_include_directories(${BOT_NAME}_lib PUBLIC ${OpenSSL_INCLUDE_DIRS})
|
||||||
target_link_libraries(${BOT_NAME} PRIVATE Boost::filesystem)
|
target_include_directories(${BOT_NAME}_lib PUBLIC ${FFMPEG_INCLUDE_PATH})
|
||||||
target_link_libraries(${BOT_NAME} PRIVATE Boost::process)
|
|
||||||
target_link_libraries(${BOT_NAME} PRIVATE Boost::log)
|
target_precompile_headers(${BOT_NAME}_lib PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include/precomp.h")
|
||||||
target_link_libraries(${BOT_NAME} PRIVATE Boost::beast)
|
|
||||||
target_link_libraries(${BOT_NAME} PRIVATE OpenSSL::Crypto)
|
target_link_libraries(${BOT_NAME}_lib PUBLIC dpp)
|
||||||
target_link_libraries(${BOT_NAME} PRIVATE OpenSSL::SSL)
|
target_link_libraries(${BOT_NAME}_lib PUBLIC Boost::filesystem)
|
||||||
target_link_libraries(${BOT_NAME} PRIVATE ${AVUTIL_LIBRARY})
|
target_link_libraries(${BOT_NAME}_lib PUBLIC Boost::process)
|
||||||
target_link_libraries(${BOT_NAME} PRIVATE ${AVCODEC_LIBRARY})
|
target_link_libraries(${BOT_NAME}_lib PUBLIC Boost::log)
|
||||||
target_link_libraries(${BOT_NAME} PRIVATE ${AVFORMAT_LIBRARY})
|
target_link_libraries(${BOT_NAME}_lib PUBLIC Boost::beast)
|
||||||
target_link_libraries(${BOT_NAME} PRIVATE ${SWSCALE_LIBRARY})
|
target_link_libraries(${BOT_NAME}_lib PUBLIC OpenSSL::Crypto)
|
||||||
|
target_link_libraries(${BOT_NAME}_lib PUBLIC OpenSSL::SSL)
|
||||||
|
target_link_libraries(${BOT_NAME}_lib PUBLIC ${AVUTIL_LIBRARY})
|
||||||
|
target_link_libraries(${BOT_NAME}_lib PUBLIC ${AVCODEC_LIBRARY})
|
||||||
|
target_link_libraries(${BOT_NAME}_lib PUBLIC ${AVFORMAT_LIBRARY})
|
||||||
|
target_link_libraries(${BOT_NAME}_lib PUBLIC ${SWSCALE_LIBRARY})
|
||||||
|
target_link_libraries(${BOT_NAME}_lib PUBLIC ${SWRESAMPLE_LIBRARY})
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
target_link_libraries(${BOT_NAME} PRIVATE ws2_32)
|
target_link_libraries(${BOT_NAME}_lib PUBLIC ws2_32)
|
||||||
endif()
|
endif()
|
||||||
if(UNIX AND NOT APPLE AND CMAKE_BUILD_TYPE STREQUAL "Release")
|
if(UNIX AND NOT APPLE)
|
||||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
set_target_properties(${BOT_NAME}_lib PROPERTIES
|
||||||
BUILD_WITH_INSTALL_RPATH TRUE
|
BUILD_WITH_INSTALL_RPATH TRUE
|
||||||
INSTALL_RPATH "$ORIGIN"
|
INSTALL_RPATH "$ORIGIN"
|
||||||
SKIP_BUILD_RPATH FALSE
|
SKIP_BUILD_RPATH FALSE
|
||||||
@@ -126,16 +135,29 @@ if(UNIX AND NOT APPLE AND CMAKE_BUILD_TYPE STREQUAL "Release")
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_include_directories(${BOT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
add_executable(${BOT_NAME} ${SOURCES})
|
||||||
|
|
||||||
target_include_directories(${BOT_NAME} PRIVATE ${OpenSSL_INCLUDE_DIRS})
|
target_link_libraries(${BOT_NAME} PUBLIC ${BOT_NAME}_lib)
|
||||||
target_include_directories(${BOT_NAME} PRIVATE ${FFMPEG_INCLUDE_PATH})
|
|
||||||
|
|
||||||
target_precompile_headers(${BOT_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include/precomp.h")
|
file(GLOB FFMPEG_SHARED
|
||||||
|
"${CMAKE_BINARY_DIR}/${FFMPEG_ARCHIVE_NAME}/bin/*.dll" # Windows
|
||||||
|
"${CMAKE_BINARY_DIR}/${FFMPEG_ARCHIVE_NAME}/lib/*.so*" # Linux
|
||||||
|
)
|
||||||
|
|
||||||
|
foreach(ffmpeg_shared ${FFMPEG_SHARED})
|
||||||
|
add_custom_command(TARGET ${BOT_NAME} POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||||
|
"${ffmpeg_shared}"
|
||||||
|
"$<TARGET_FILE_DIR:${BOT_NAME}>"
|
||||||
|
COMMENT "Copying ${ffmpeg_shared} to output directory"
|
||||||
|
)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
add_custom_command(TARGET ${BOT_NAME} POST_BUILD
|
add_custom_command(TARGET ${BOT_NAME} POST_BUILD
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||||
"${CMAKE_BINARY_DIR}/${FFMPEG_ARCHIVE_NAME}/bin"
|
"$<TARGET_FILE:dpp>"
|
||||||
"$<TARGET_FILE_DIR:${BOT_NAME}>"
|
"$<TARGET_FILE_DIR:${BOT_NAME}>"
|
||||||
COMMENT "Copying FFMpeg_AVCODEC DLL/so files to output directory"
|
COMMENT "Copying dpp DLL/so files to output directory"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_subdirectory(tests)
|
||||||
44
src/main.cc
44
src/main.cc
@@ -4,51 +4,7 @@
|
|||||||
|
|
||||||
int main(int argc, char* argv[]) {
|
int main(int argc, char* argv[]) {
|
||||||
boost::asio::io_context ctx;
|
boost::asio::io_context ctx;
|
||||||
boost::system::error_code ec;
|
|
||||||
char buf[8192];
|
|
||||||
std::string output;
|
|
||||||
|
|
||||||
utils::CheckUpdate(ctx);
|
utils::CheckUpdate(ctx);
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
/*try {
|
|
||||||
auto ytdlp_pipe = utils::OpenPipe(ctx,
|
|
||||||
"yt-dlp.exe", { "-o", "-", "--quiet", "--ignore-errors", "-f",
|
|
||||||
"bestaudio", "https://youtu.be/9_bTl2vvYQg?si=IVhvpDhnpPvziwQR" });
|
|
||||||
|
|
||||||
while (true) {
|
|
||||||
boost::system::error_code read_ec;
|
|
||||||
size_t bytes_read =
|
|
||||||
boost::asio::read(ytdlp_pipe, boost::asio::buffer(buf,
|
|
||||||
8192), read_ec); if (bytes_read > 0) { std::cout.write(buf, bytes_read);
|
|
||||||
}
|
|
||||||
if (read_ec == boost::asio::error::eof || read_ec) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (const boost::process::system_error& e) {
|
|
||||||
std::string error = e.what();
|
|
||||||
return -1;
|
|
||||||
}*/
|
|
||||||
#else
|
|
||||||
auto ytdlp_pipe = utils::OpenPipe(
|
|
||||||
ctx, "yt-dlp",
|
|
||||||
{"-o", "-", "--quiet", "--ignore-errors", "-f", "bestaudio",
|
|
||||||
"https://youtu.be/9_bTl2vvYQg?si=IVhvpDhnpPvziwQR"});
|
|
||||||
|
|
||||||
while (true) {
|
|
||||||
boost::system::error_code read_ec;
|
|
||||||
size_t bytes_read =
|
|
||||||
boost::asio::read(ytdlp_pipe, boost::asio::buffer(buf, 8192), read_ec);
|
|
||||||
if (bytes_read > 0) {
|
|
||||||
std::cout.write(buf, bytes_read);
|
|
||||||
}
|
|
||||||
if (read_ec == boost::asio::error::eof || read_ec) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
8
tests/CMakeLists.txt
Normal file
8
tests/CMakeLists.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
file(GLOB_RECURSE TEST_SOURCES "*.cpp" "*.cxx" "*.cc")
|
||||||
|
|
||||||
|
foreach(test_src ${TEST_SOURCES})
|
||||||
|
get_filename_component(test_name ${test_src} NAME_WE)
|
||||||
|
add_executable(${test_name} ${test_src})
|
||||||
|
target_link_libraries(${test_name} PRIVATE ${BOT_NAME}_lib)
|
||||||
|
add_test(NAME ${test_name} COMMAND ${test_name})
|
||||||
|
endforeach()
|
||||||
52
tests/basic_yt_dlp_download.cc
Normal file
52
tests/basic_yt_dlp_download.cc
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
#include "precomp.h"
|
||||||
|
#include "utils/console.h"
|
||||||
|
#include "utils/update_checker.h"
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
boost::asio::io_context ctx;
|
||||||
|
boost::system::error_code ec;
|
||||||
|
|
||||||
|
utils::CheckUpdate(ctx);
|
||||||
|
|
||||||
|
char buf[8192];
|
||||||
|
#ifdef WIN32
|
||||||
|
/*try {
|
||||||
|
auto ytdlp_pipe = utils::OpenPipe(ctx,
|
||||||
|
"yt-dlp.exe", { "-o", "-", "--quiet", "--ignore-errors", "-f",
|
||||||
|
"bestaudio", "https://youtu.be/9_bTl2vvYQg?si=IVhvpDhnpPvziwQR" });
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
boost::system::error_code read_ec;
|
||||||
|
size_t bytes_read =
|
||||||
|
boost::asio::read(ytdlp_pipe, boost::asio::buffer(buf,
|
||||||
|
8192), read_ec); if (bytes_read > 0) { std::cout.write(buf, bytes_read);
|
||||||
|
}
|
||||||
|
if (read_ec == boost::asio::error::eof || read_ec) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (const boost::process::system_error& e) {
|
||||||
|
std::string error = e.what();
|
||||||
|
return -1;
|
||||||
|
}*/
|
||||||
|
#else
|
||||||
|
auto ytdlp_pipe = utils::OpenPipe(
|
||||||
|
ctx, "yt-dlp",
|
||||||
|
{"-o", "-", "--quiet", "--ignore-errors", "-f", "bestaudio",
|
||||||
|
"https://youtu.be/9_bTl2vvYQg?si=IVhvpDhnpPvziwQR"});
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
boost::system::error_code read_ec;
|
||||||
|
size_t bytes_read =
|
||||||
|
boost::asio::read(ytdlp_pipe, boost::asio::buffer(buf, 8192), read_ec);
|
||||||
|
if (bytes_read > 0) {
|
||||||
|
std::cout.write(buf, bytes_read);
|
||||||
|
}
|
||||||
|
if (read_ec == boost::asio::error::eof || read_ec) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
8
tests/update.cc
Normal file
8
tests/update.cc
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
#include "precomp.h"
|
||||||
|
#include "utils/update_checker.h"
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
boost::asio::io_context ctx;
|
||||||
|
utils::CheckUpdate(ctx);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user