From b7c6498126c82b1a60cbbc24c9b148f4271c241c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D1=82=D0=BE=D0=BD?= Date: Wed, 2 Jul 2025 21:28:03 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D1=81=D0=BF=D0=B5=D1=88=D0=BD=D1=8B?= =?UTF-8?q?=D0=B9=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=20C++=2023!!!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 27 ++++-- conanfile.py | 23 ----- custom_recipes/boost/conanfile.py | 26 ----- .../libmysqlclient_fix/conandata.yml | 4 - .../libmysqlclient_fix/conanfile.py | 96 ------------------- custom_recipes/lz4_fix/conanfile.py | 65 ------------- custom_recipes/openssl_fix/conanfile.py | 28 ------ custom_recipes/zlib_fix/conandata.yml | 4 - custom_recipes/zlib_fix/conanfile.py | 45 --------- custom_recipes/zstd_fix/conanfile.py | 27 ------ profiles/debug_profile | 15 --- profiles/release_profile | 15 --- src/helpers/helpers.cpp | 2 +- 13 files changed, 19 insertions(+), 358 deletions(-) delete mode 100644 conanfile.py delete mode 100644 custom_recipes/boost/conanfile.py delete mode 100644 custom_recipes/libmysqlclient_fix/conandata.yml delete mode 100644 custom_recipes/libmysqlclient_fix/conanfile.py delete mode 100644 custom_recipes/lz4_fix/conanfile.py delete mode 100644 custom_recipes/openssl_fix/conanfile.py delete mode 100644 custom_recipes/zlib_fix/conandata.yml delete mode 100644 custom_recipes/zlib_fix/conanfile.py delete mode 100644 custom_recipes/zstd_fix/conanfile.py delete mode 100644 profiles/debug_profile delete mode 100644 profiles/release_profile diff --git a/CMakeLists.txt b/CMakeLists.txt index 0761883..a57c8b0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,18 +1,27 @@ -cmake_minimum_required(VERSION 3.30.5) +cmake_minimum_required(VERSION 3.29.8) project(UpAndDown) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) -if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") - include(${CMAKE_CURRENT_SOURCE_DIR}/cmake-build-debug/conan_toolchain.cmake) -elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "Release") - include(${CMAKE_CURRENT_SOURCE_DIR}/cmake-build-release/conan_toolchain.cmake) -elseif () - message(ERROR!!!) +if(POLICY CMP0167) + cmake_policy(SET CMP0167 OLD) +endif() + +set(BOOST_ROOT "C:/Libs/boost_1_88_0") + +set(Boost_USE_STATIC_LIBS ON) +set(Boost_USE_MULTITHREADED ON) +set(Boost_INCLUDE_DIR ${CMAKE_INCLUDE_PATH} ${BOOST_ROOT}) +set(Boost_LIBRARY_DIR ${CMAKE_LIBRARY_PATH} "${BOOST_ROOT}/stage/lib") + +find_package(Boost 1.84.0 REQUIRED COMPONENTS filesystem json log) +if (Boost_FOUND) + include_directories(${Boost_INCLUDE_DIR}) endif () -find_package(Boost REQUIRED) +set(THREADS_PREFER_PTHREAD_FLAG ON) +find_package(Threads REQUIRED) add_executable(App ./src/main.cpp ./src/helpers/helpers.h @@ -26,7 +35,7 @@ add_executable(App ./src/main.cpp ./src/listener/Listener.cpp ) -target_link_libraries(App PRIVATE Boost::boost) +target_link_libraries(App PRIVATE Boost::boost Threads::Threads) if (MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj") diff --git a/conanfile.py b/conanfile.py deleted file mode 100644 index 41f16ae..0000000 --- a/conanfile.py +++ /dev/null @@ -1,23 +0,0 @@ -from conan import ConanFile -from conan.tools.cmake import CMakeToolchain, CMake - -class UpAndDown(ConanFile): - name = "up_and_down" - version = "1.0.0" - settings = "os", "compiler", "build_type", "arch" - generators = "CMakeToolchain", "CMakeDeps" - - def requirements(self): - self.requires("boost/1.87.0@up_and_down/stable") - self.requires("libmysqlclient/8.1.0@up_and_down/stable", override=True) - self.requires("lz4/1.10.0@up_and_down/stable", override=True) - self.requires("openssl/3.5.0@up_and_down/stable", force=True) - self.requires("zlib/1.3.1@up_and_down/stable", override=True) - self.requires("zstd/1.5.7@up_and_down/stable", override=True) - - def configure(self): - # Настройки для boost - self.options["boost/*"].toolset = "msvc-14.3" - self.options["boost/*"].without_stacktrace = True - self.options["boost/*"].without_context = True - self.options["openssl"].shared = True diff --git a/custom_recipes/boost/conanfile.py b/custom_recipes/boost/conanfile.py deleted file mode 100644 index 4ae5673..0000000 --- a/custom_recipes/boost/conanfile.py +++ /dev/null @@ -1,26 +0,0 @@ -from conan import ConanFile -from conan.tools.files import get, copy -import os - -class CustomBoostConan(ConanFile): - name = "boost" - version = "1.87.0" - settings = "os", "compiler", "arch", "build_type" - - def source(self): - # Используем прямой URL с GitHub - get(self, "https://github.com/boostorg/boost/archive/refs/tags/boost-1.87.0.zip", - destination=self.source_folder, strip_root=True) - - def build(self): - pass # Пропускаем сборку - - def package(self): - # Копируем заголовочные файлы - copy(self, "*", - os.path.join(self.source_folder, "boost"), - os.path.join(self.package_folder, "include", "boost")) - - def package_info(self): - self.cpp_info.includedirs = ["include"] - self.cpp_info.libdirs = [] # Только заголовочная библиотека \ No newline at end of file diff --git a/custom_recipes/libmysqlclient_fix/conandata.yml b/custom_recipes/libmysqlclient_fix/conandata.yml deleted file mode 100644 index 9dd23d2..0000000 --- a/custom_recipes/libmysqlclient_fix/conandata.yml +++ /dev/null @@ -1,4 +0,0 @@ -sources: - "8.1.0": - url: "https://dev.mysql.com/get/Downloads/MySQL-8.1/mysql-8.1.0.tar.gz" - sha256: "3dd017a940734aa90796a4c65e125e6712f64bbbbe3388d36469deaa87b599eb" diff --git a/custom_recipes/libmysqlclient_fix/conanfile.py b/custom_recipes/libmysqlclient_fix/conanfile.py deleted file mode 100644 index c28a0f6..0000000 --- a/custom_recipes/libmysqlclient_fix/conanfile.py +++ /dev/null @@ -1,96 +0,0 @@ -from conan import ConanFile -from conan.tools.cmake import CMake, CMakeToolchain, cmake_layout -from conan.tools.files import get, copy, rmdir -import os - -class LibmysqlclientConan(ConanFile): - name = "libmysqlclient" - version = "8.1.0" - description = "MySQL client library" - license = "GPL-2.0" - url = "https://dev.mysql.com/" - homepage = "https://www.mysql.com" - topics = ("mysql", "database", "sql") - settings = "os", "compiler", "build_type", "arch" - options = { - "shared": [True, False], - "fPIC": [True, False], - } - default_options = { - "shared": False, - "fPIC": True, - } - - def config_options(self): - if self.settings.os == "Windows": - del self.options.fPIC - - def configure(self): - if self.options.shared: - self.options.rm_safe("fPIC") - - def layout(self): - cmake_layout(self, src_folder="src") - - def source(self): - get(self, **self.conan_data["sources"][self.version], strip_root=True) - - def generate(self): - tc = CMakeToolchain(self) - - # Критически важные настройки - tc.variables["WITHOUT_SERVER"] = "ON" - tc.variables["WITH_UNIT_TESTS"] = "OFF" - tc.variables["DISABLE_SHARED"] = "OFF" if self.options.shared else "ON" - tc.variables["DISABLE_STATIC"] = "ON" if self.options.shared else "OFF" - - # Настройки для Windows - if self.settings.os == "Windows": - tc.variables["WITH_SSL"] = "schannel" - tc.variables["WITH_ZLIB"] = "bundled" - if "MD" in str(self.settings.compiler.runtime): - tc.variables["WINDOWS_RUNTIME_MD"] = "ON" - else: - tc.variables["WITH_SSL"] = "system" - tc.variables["WITH_ZLIB"] = "system" - - tc.generate() - - def build(self): - cmake = CMake(self) - self.run("cmake --version") - self.run("cmake -E chdir . ls -la", shell=True) - cmake.configure() - cmake.build() - - def package(self): - cmake = CMake(self) - cmake.install() - - # Копируем только необходимые файлы - copy(self, "*.h", - src=os.path.join(self.source_folder, "include"), - dst=os.path.join(self.package_folder, "include")) - - copy(self, "*.lib", - src=os.path.join(self.build_folder, "library_output_directory"), - dst=os.path.join(self.package_folder, "lib")) - - copy(self, "*.dll", - src=os.path.join(self.build_folder, "library_output_directory"), - dst=os.path.join(self.package_folder, "bin")) - - # Удаляем ненужные файлы - rmdir(self, os.path.join(self.package_folder, "docs")) - rmdir(self, os.path.join(self.package_folder, "share")) - rmdir(self, os.path.join(self.package_folder, "bin", "Debug")) - rmdir(self, os.path.join(self.package_folder, "lib", "pkgconfig")) - - def package_info(self): - self.cpp_info.libs = ["mysqlclient"] - self.cpp_info.includedirs = ["include", "include/mysql"] - - if self.settings.os == "Windows": - self.cpp_info.system_libs = ["ws2_32", "crypt32", "secur32", "shlwapi", "advapi32"] - if self.options.shared: - self.cpp_info.defines = ["LIBMYSQL_DYNAMIC"] \ No newline at end of file diff --git a/custom_recipes/lz4_fix/conanfile.py b/custom_recipes/lz4_fix/conanfile.py deleted file mode 100644 index 87eab65..0000000 --- a/custom_recipes/lz4_fix/conanfile.py +++ /dev/null @@ -1,65 +0,0 @@ -from conan import ConanFile -from conan.tools.cmake import CMake, CMakeToolchain -from conan.tools.files import get, replace_in_file, load -import os -import re - -class Lz4Conan(ConanFile): - name = "lz4" - version = "1.10.0" - settings = "os", "compiler", "arch", "build_type" - - def source(self): - # Скачиваем исходники - url = f"https://github.com/lz4/lz4/archive/refs/tags/v{self.version}.tar.gz" - get(self, url, strip_root=True) - - # Находим CMakeLists.txt в правильном месте - cmakelists_path = os.path.join(self.source_folder, "build", "cmake", "CMakeLists.txt") - if not os.path.exists(cmakelists_path): - # Для более новых версий lz4 путь может быть другим - cmakelists_path = os.path.join(self.source_folder, "CMakeLists.txt") - - # Применяем исправление для VS2022 - if os.path.exists(cmakelists_path): - content = load(self, cmakelists_path) - - # Добавляем исправление, если его еще нет - if "CMP0091" not in content: - # Ищем место для вставки после cmake_minimum_required - new_content = re.sub( - r'(cmake_minimum_required\(VERSION [\d.]+\))', - r'\1\n\n# Fix for VS2022\ncmake_policy(SET CMP0091 NEW)', - content - ) - - with open(cmakelists_path, "w", encoding="utf-8") as f: - f.write(new_content) - self.output.info("Applied VS2022 fix to CMakeLists.txt") - - def generate(self): - tc = CMakeToolchain(self) - # Явно указываем генератор для VS2022 - if self.settings.compiler == "msvc" and self.settings.compiler.version == "193": - tc.generator = "Visual Studio 17 2022" - - # Дополнительные настройки для MSVC - tc.preprocessor_definitions["_CRT_SECURE_NO_WARNINGS"] = "1" - tc.variables["CMAKE_MSVC_RUNTIME_LIBRARY"] = "MultiThreaded$<$:Debug>" - tc.generate() - - def build(self): - cmake = CMake(self) - # Автоматически определяем папку со скриптами CMake - if os.path.exists(os.path.join(self.source_folder, "build", "cmake")): - cmake.configure(build_script_folder=os.path.join("build", "cmake")) - else: - cmake.configure() - cmake.build() - - def package(self): - cmake = CMake(self) - cmake.install() - - def package_info(self): - self.cpp_info.libs = ["lz4"] \ No newline at end of file diff --git a/custom_recipes/openssl_fix/conanfile.py b/custom_recipes/openssl_fix/conanfile.py deleted file mode 100644 index f7589ed..0000000 --- a/custom_recipes/openssl_fix/conanfile.py +++ /dev/null @@ -1,28 +0,0 @@ -from conan import ConanFile -from conan.tools.microsoft import msvs_toolset, is_msvc -from conan.tools.env import VirtualBuildEnv - -class OpenSSLConan(ConanFile): - name = "openssl" - version = "3.5.0" - settings = "os", "compiler", "arch", "build_type" - - def generate(self): - vs_version = None - if is_msvc(self): - # Получаем версию тулсета (v143 для VS2022) - toolset = msvs_toolset(self) - self.output.info(f"Detected toolset: {toolset}") - - # Сопоставляем тулсет с версией VS - if "v143" in toolset: - vs_version = "17" # VS2022 - elif "v142" in toolset: - vs_version = "16" # VS2019 - - if vs_version: - # Правильный способ установки переменных окружения в Conan 2.x - build_env = VirtualBuildEnv(self) - build_env.environment().define("CONAN_VS_VERSION", vs_version) - build_env.generate() - self.output.info(f"Setting VS version to: {vs_version}") \ No newline at end of file diff --git a/custom_recipes/zlib_fix/conandata.yml b/custom_recipes/zlib_fix/conandata.yml deleted file mode 100644 index 0da9731..0000000 --- a/custom_recipes/zlib_fix/conandata.yml +++ /dev/null @@ -1,4 +0,0 @@ -sources: - "1.3.1": - url: "https://github.com/madler/zlib/archive/refs/tags/v1.3.1.tar.gz" - sha256: "17e88863f3600672ab49182f217281b6fc4d3c762bde361935e436a95214d05c" \ No newline at end of file diff --git a/custom_recipes/zlib_fix/conanfile.py b/custom_recipes/zlib_fix/conanfile.py deleted file mode 100644 index bff6dad..0000000 --- a/custom_recipes/zlib_fix/conanfile.py +++ /dev/null @@ -1,45 +0,0 @@ -from conan import ConanFile -from conan.tools.files import get, replace_in_file -import os - -class ZlibConan(ConanFile): - name = "zlib" - version = "1.3.1" - user = "up_and_down" - channel = "stable" - settings = "os", "compiler", "build_type", "arch" - description = "zlib compression library" - license = "Zlib" - url = "https://github.com/madler/zlib" - - # Добавляем экспорт данных - exports = "conandata.yml" - - def source(self): - # Получаем данные из conandata.yml - data = self.conan_data["sources"][self.version] - get(self, **data, strip_root=True) - - # Удаляем блок IPO для Release - cmake_file = os.path.join(self.source_folder, "CMakeLists.txt") - replace_in_file( - self, - cmake_file, - "# interprocedural optimizations\n" - "if(CMAKE_INTERPROCEDURAL_OPTIMIZATION)\n" - " set_target_properties(zlib PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ${CMAKE_INTERPROCEDURAL_OPTIMIZATION})\n" - "endif()", - "", - strict=False - ) - - def build(self): - # Ваша логика сборки - pass - - def package(self): - # Ваша логика упаковки - pass - - def package_info(self): - self.cpp_info.libs = ["z"] \ No newline at end of file diff --git a/custom_recipes/zstd_fix/conanfile.py b/custom_recipes/zstd_fix/conanfile.py deleted file mode 100644 index 58acf61..0000000 --- a/custom_recipes/zstd_fix/conanfile.py +++ /dev/null @@ -1,27 +0,0 @@ -from conan import ConanFile -from conan.tools.files import get, copy -import os - -class ZstdConan(ConanFile): - name = "zstd" - version = "1.5.7" - settings = "os", "compiler", "build_type", "arch" - - def source(self): - get(self, - url=f"https://github.com/facebook/zstd/releases/download/v{self.version}/zstd-{self.version}.tar.gz", - sha256="eb33e51f49a15e023950cd7825ca74a4a2b43db8354825ac24fc1b7ee09e6fa3", - strip_root=True) - - def build(self): - pass # Используем предсобранные библиотеки - - def package(self): - # Копируем предсобранные библиотеки из архива - copy(self, "*.h", src=os.path.join(self.source_folder, "lib"), dst=os.path.join(self.package_folder, "include")) - copy(self, "*.lib", src=os.path.join(self.source_folder, "lib"), dst=os.path.join(self.package_folder, "lib")) - copy(self, "*.dll", src=os.path.join(self.source_folder, "lib"), dst=os.path.join(self.package_folder, "bin")) - copy(self, "*.a", src=os.path.join(self.source_folder, "lib"), dst=os.path.join(self.package_folder, "lib")) - - def package_info(self): - self.cpp_info.libs = ["zstd"] \ No newline at end of file diff --git a/profiles/debug_profile b/profiles/debug_profile deleted file mode 100644 index bcca976..0000000 --- a/profiles/debug_profile +++ /dev/null @@ -1,15 +0,0 @@ -[settings] -arch=x86_64 -build_type=Debug -compiler=msvc -compiler.cppstd=23 -compiler.runtime=dynamic -compiler.version=193 -compiler.toolset=v143:version=14.44.35207 -os=Windows - -[conf] -tools.microsoft:winsdk_version=10.0.20348.0 -tools.microsoft.msbuild:installation_path="C:\\VS2022" -tools.microsoft.msbuild:vs_version=2022 -tools.cmake.cmaketoolchain:generator="Visual Studio 17 2022" diff --git a/profiles/release_profile b/profiles/release_profile deleted file mode 100644 index 309fa93..0000000 --- a/profiles/release_profile +++ /dev/null @@ -1,15 +0,0 @@ -[settings] -arch=x86_64 -build_type=Release -compiler=msvc -compiler.cppstd=23 -compiler.runtime=dynamic -compiler.version=193 -compiler.toolset=v143:version=14.44.35207 -os=Windows - -[conf] -tools.microsoft:winsdk_version=10.0.20348.0 -tools.microsoft.msbuild:installation_path="C:\\VS2022" -tools.microsoft.msbuild:vs_version=2022 -tools.cmake.cmaketoolchain:generator="Visual Studio 17 2022" diff --git a/src/helpers/helpers.cpp b/src/helpers/helpers.cpp index 61bde9a..c565453 100644 --- a/src/helpers/helpers.cpp +++ b/src/helpers/helpers.cpp @@ -101,7 +101,7 @@ std::string ToHex(std::byte* src, size_t len) string ret; ret.reserve(len * 2); - format formatter = format("%02X"); + boost::format formatter = boost::format("%02X"); for (size_t i = 0; i < len; ++i) {