我正在使用cmake作为静态库从源代码构建libcurl。它在Windows和Linux上都能很好地工作。但是我在curl_multi_socket_action和Mac上的超时回调中出现堆栈溢出。
我的问题是,是否允许从回调内部调用curl_multi_socket_action?如果是这样,构建中可能缺少什么导致递归?
还请注意,如果我用用brew安装的libcurl替换了libcurl的自定义版本,则代码运行良好。
option(CURL_STATICLIB "Set to ON to build libcurl with static linking." ON)
option(HTTP_ONLY "disables all protocols except HTTP (This overrides all CURL_DISABLE_* options)" ON)
if(WIN32)
option(CMAKE_USE_WINSSL "enable Windows native SSL/TLS" ON)
elseif(APPLE)
option(CMAKE_USE_DARWINSSL "enable Apple OS native SSL/TLS" ON)
else()
option(CMAKE_USE_OPENSSL "use OpenSSL code" ON)
endif()
set(CURL_CA_PATH "none" CACHE STRING "ca path")
add_subdirectory(curl)
target_include_directories(libcurl INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/curl/include>)
target_compile_definitions(libcurl INTERFACE CURL_STATICLIB)