Код: Выделить всё
/root/uwu/include/picohttp/server.hpp:58:58: error: ‘io_scheduler’ is not a member of ‘coro’
58 | coro::task create_worker(std::shared_ptr scheduler) {
| ^~~~~~~~~~~~
/root/uwu/include/picohttp/server.hpp:58:70: error: template argument 1 is invalid
58 | coro::task create_worker(std::shared_ptr scheduler) {
| ^
/root/uwu/include/picohttp/server.hpp:58:36: error: ‘std::scheduler’ has not been declared
58 | coro::task create_worker(std::shared_ptr scheduler) {
| ^~~
/root/uwu/include/picohttp/server.hpp: In member function ‘coro::task picohttp::HttpServer::start()’:
/root/uwu/include/picohttp/server.hpp:45:36: error: ‘coro::io_scheduler’ has not been declared
45 | auto scheduler = coro::io_scheduler::make_shared(coro::io_scheduler::options{
| ^~~~~~~~~~~~
/root/uwu/include/picohttp/server.hpp:45:68: error: ‘coro::io_scheduler’ has not been declared
45 | auto scheduler = coro::io_scheduler::make_shared(coro::io_scheduler::options{
| ^~~~~~~~~~~~
/root/uwu/include/picohttp/server.hpp: In member function ‘coro::task picohttp::HttpServer::create_worker(int)’:
/root/uwu/include/picohttp/server.hpp:59:47: error: ‘coro::net’ has not been declared
59 | auto handle_connection = [this](coro::net::tcp::client client) -> coro::task {
| ^~~
/root/uwu/include/picohttp/server.hpp:59:64: error: expected ‘,’ or ‘...’ before ‘client’
59 | auto handle_connection = [this](coro::net::tcp::client client) -> coro::task {
| ^~~~~~
/root/uwu/include/picohttp/server.hpp: In lambda function:
/root/uwu/include/picohttp/server.hpp:63:33: error: request for member ‘poll’ in ‘client’, which is of non-class type ‘int’
63 | co_await client.poll(coro::poll_op::read);
| ^~~~
/root/uwu/include/picohttp/server.hpp:63:44: error: ‘coro::poll_op’ has not been declared
63 | co_await client.poll(coro::poll_op::read);
| ^~~~~~~
/root/uwu/include/picohttp/server.hpp:66:48: error: request for member ‘recv’ in ‘client’, which is of non-class type ‘int’
66 | auto [rstatus, rspan] = client.recv(recv_buffer);
| ^~~~
/root/uwu/include/picohttp/server.hpp:69:32: error: ‘coro::net’ has not been declared
69 | case coro::net::recv_status::ok: {
| ^~~
/root/uwu/include/picohttp/server.hpp:78:49: error: request for member ‘poll’ in ‘client’, which is of non-class type ‘int’
78 | co_await client.poll(coro::poll_op::write);
| ^~~~
/root/uwu/include/picohttp/server.hpp:78:60: error: ‘coro::poll_op’ has not been declared
78 | co_await client.poll(coro::poll_op::write);
| ^~~~~~~
< /code>
Но в библиотеке Libcoro есть эти функции. Я также уже включил сетевую функцию.cmake_minimum_required(VERSION 3.16)
project(PicoHTTPServer)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Threads REQUIRED)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
message(STATUS "Fetching libcoro from GitHub...")
include(FetchContent)
FetchContent_Declare(
libcoro
GIT_REPOSITORY https://github.com/jbaldwin/libcoro.git
GIT_TAG main
GIT_SHALLOW TRUE
)
message(STATUS "Fetching picohttpparser from GitHub...")
FetchContent_Declare(
picohttpparser
GIT_REPOSITORY https://github.com/h2o/picohttpparser.git
GIT_TAG master
GIT_SHALLOW TRUE
)
set(LIBCORO_ENABLE_ASAN OFF CACHE BOOL "" FORCE)
set(LIBCORO_ENABLE_MSAN OFF CACHE BOOL "" FORCE)
set(LIBCORO_ENABLE_TSAN OFF CACHE BOOL "" FORCE)
set(LIBCORO_ENABLE_USAN OFF CACHE BOOL "" FORCE)
set(LIBCORO_EXTERNAL_DEPENDENCIES OFF CACHE BOOL "" FORCE)
set(LIBCORO_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(LIBCORO_CODE_COVERAGE OFF CACHE BOOL "" FORCE)
set(LIBCORO_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
set(LIBCORO_FEATURE_NETWORKING ON CACHE BOOL "" FORCE)
set(LIBCORO_FEATURE_TLS OFF CACHE BOOL "" FORCE)
set(LIBCORO_RUN_GITCONFIG OFF CACHE BOOL "" FORCE)
set(LIBCORO_BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
set(LIBCORO_ENABLE_ASAN OFF)
set(LIBCORO_ENABLE_MSAN OFF)
set(LIBCORO_ENABLE_TSAN OFF)
set(LIBCORO_ENABLE_USAN OFF)
set(LIBCORO_EXTERNAL_DEPENDENCIES OFF)
set(LIBCORO_BUILD_TESTS OFF)
set(LIBCORO_CODE_COVERAGE OFF)
set(LIBCORO_BUILD_EXAMPLES OFF)
set(LIBCORO_FEATURE_NETWORKING ON)
set(LIBCORO_FEATURE_TLS OFF)
set(LIBCORO_RUN_GITCONFIG OFF)
set(LIBCORO_BUILD_SHARED_LIBS OFF)
FetchContent_MakeAvailable(libcoro picohttpparser)
message(STATUS "Libcoro binary dir: ${libcoro_BINARY_DIR}")
message(STATUS "Libcoro source dir: ${libcoro_SOURCE_DIR}")
set(LIBCORO_INCLUDE_DIRS
"${libcoro_SOURCE_DIR}/include"
"${libcoro_BINARY_DIR}/include"
)
if(EXISTS "${libcoro_SOURCE_DIR}/include/coro/coro.hpp")
message(STATUS "Found libcoro headers at: ${libcoro_SOURCE_DIR}/include")
else()
message(WARNING "Could not find coro/coro.hpp at ${libcoro_SOURCE_DIR}/include")
endif()
if(EXISTS "${libcoro_BINARY_DIR}/include/coro/export.hpp")
message(STATUS "Found libcoro export.hpp at: ${libcoro_BINARY_DIR}/include")
else()
message(STATUS "Export.hpp not found at ${libcoro_BINARY_DIR}/include - it may be generated later")
endif()
add_library(picohttpparser_lib STATIC ${picohttpparser_SOURCE_DIR}/picohttpparser.c)
target_include_directories(picohttpparser_lib PUBLIC ${picohttpparser_SOURCE_DIR})
set(SOURCE_FILE "")
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp")
set(SOURCE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp")
elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/paste.txt")
set(SOURCE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/paste.txt")
elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/server.cpp")
set(SOURCE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/server.cpp")
else()
message(FATAL_ERROR "Source file not found! Please ensure main.cpp, paste.txt, or server.cpp exists in ${CMAKE_CURRENT_SOURCE_DIR}")
endif()
message(STATUS "Using source file: ${SOURCE_FILE}")
add_executable(picohttp_server ${SOURCE_FILE})
target_include_directories(picohttp_server PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/include
${LIBCORO_INCLUDE_DIRS}
${picohttpparser_SOURCE_DIR}
)
target_link_libraries(picohttp_server
coro
picohttpparser_lib
Threads::Threads
)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
target_compile_options(picohttp_server PRIVATE
-Wall -Wextra -O3
-fcoroutines
)
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 11)
target_compile_options(picohttp_server PRIVATE -fcoroutines-ts)
endif()
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
target_compile_options(picohttp_server PRIVATE
-Wall -Wextra -O3
-stdlib=libc++
)
endif()
if(UNIX AND NOT APPLE)
target_link_libraries(picohttp_server rt)
endif()
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
message(STATUS "Compiler: ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
message(STATUS "Libcoro source: ${libcoro_SOURCE_DIR}")
message(STATUS "PicoHTTPParser source: ${picohttpparser_SOURCE_DIR}")
message(STATUS "C++ Standard: ${CMAKE_CXX_STANDARD}")
message(STATUS "Libcoro networking feature: ON")
message(STATUS "Libcoro TLS feature: OFF")
get_target_property(INCLUDE_DIRS picohttp_server INCLUDE_DIRECTORIES)
message(STATUS "Include directories: ${INCLUDE_DIRS}")
< /code>
Моя структура папок подобна следующему: < /p>
main.cpp
CMakeLists.txt
include/picohttp/server.hpp
include/picohttp/other hpp files
< /code>
Импорт в моем сервере.#pragma once
#include "http_types.hpp"
#include "router.hpp"
#include "parser.hpp"
#include
#include
#include
#include
Код: Выделить всё
[root@LAPTOP-7QHQMBKS build]# cmake .. -DCMAKE_BUILD_TYPE=Release
-- Fetching libcoro from GitHub...
-- Fetching picohttpparser from GitHub...
libcoro LIBCORO_ENABLE_ASAN = OFF
libcoro LIBCORO_ENABLE_MSAN = OFF
libcoro LIBCORO_ENABLE_TSAN = OFF
libcoro LIBCORO_ENABLE_USAN = OFF
libcoro LIBCORO_EXTERNAL_DEPENDENCIES = OFF
libcoro LIBCORO_BUILD_TESTS = OFF
libcoro LIBCORO_CODE_COVERAGE = OFF
libcoro LIBCORO_BUILD_EXAMPLES = OFF
libcoro LIBCORO_FEATURE_NETWORKING = ON
libcoro LIBCORO_FEATURE_TLS = OFF
libcoro LIBCORO_RUN_GITCONFIG = OFF
libcoro LIBCORO_BUILD_SHARED_LIBS = OFF
CMake Deprecation Warning at build/_deps/libcoro-src/vendor/c-ares/c-ares/CMakeLists.txt:1 (CMAKE_MINIMUM_REQUIRED):
Compatibility with CMake < 3.10 will be removed from a future version of
CMake.
Update the VERSION argument value. Or, use the ... syntax
to tell CMake that the project requires at least but has been updated
to work with policies introduced by or earlier.
-- Libcoro binary dir: /root/uwu/build/_deps/libcoro-build
-- Libcoro source dir: /root/uwu/build/_deps/libcoro-src
-- Found libcoro headers at: /root/uwu/build/_deps/libcoro-src/include
-- Found libcoro export.hpp at: /root/uwu/build/_deps/libcoro-build/include
-- Using source file: /root/uwu/main.cpp
-- Build type: Release
-- Compiler: GNU 14.2.1
-- Libcoro source: /root/uwu/build/_deps/libcoro-src
-- PicoHTTPParser source: /root/uwu/build/_deps/picohttpparser-src
-- C++ Standard: 20
-- Libcoro networking feature: ON
-- Libcoro TLS feature: OFF
-- Include directories: /root/uwu/include;/root/uwu/build/_deps/libcoro-src/include;/root/uwu/build/_deps/libcoro-build/include;/root/uwu/build/_deps/picohttpparser-src
-- Configuring done (2.3s)
-- Generating done (0.0s)
-- Build files have been written to: /root/uwu/build
Подробнее здесь: https://stackoverflow.com/questions/796 ... er-of-coro