Consumer-side fallout from #965 (WSC): unconditional Linux deps, missing Apple toggle, silent submodule failures

未关闭
#989 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
35/100
Issue 类型
缺陷
描述清晰度
需要澄清
活跃度
冷清
技术栈
cmake, cpp, git, shell

调研方向

首先将剩余工作分配到 CMakeLists.txt、install_dependencies.bash、Apple project.pbxproj、Win32.Shared.vcxitems、GDK.Shared.vcxitems,以及 #988 中按文件划分的预处理器定义。先审查现有的配套更改和列出的构建保护。完成的标准是:关闭压缩的构建能够避免不必要的依赖项,Apple 暴露该开关,报告缺失的 Win32/GDK 子模块,并完成 override 审计。

由索引模型根据 Issue 内容生成。

描述

Tracking issue for consumer-side fallout from #965 (WebSocket Compression support). Even with compression turned off, consumers must take on new dependencies and submodules. Filing here so the work can be scoped/split.

Gaps identified
  • (fixed by companion PR) Linux CMakeLists.txt:84-86 adds websocketpp_websocket.cpp/.h to LINUX_SOURCE_FILES unconditionally. Consumers building with HC_NOWEBSOCKETS still compile the TU and require External/asio + External/websocketpp submodules to be initialized.
  • (fixed by companion PR) Build/libHttpClient.Linux/install_dependencies.bash installs zlib1g / zlib1g-dev unconditionally. Should honor HC_NOZLIB and HC_NOWEBSOCKETS.
  • Apple has no HC_ENABLE_WEBSOCKET_COMPRESSION toggle. The macro is hard-coded =1 in 4 places in Build/libHttpClient.Apple.C/libHttpClient.xcodeproj/project.pbxproj (iOS/macOS Debug/Release). Other HC_* knobs are exposed as build settings; this one should follow suit.
  • Win32 / GDK silent feature loss when boost-wintls submodule is missing. All WSC-related per-file ClCompile entries in Win32.Shared.vcxitems / GDK.Shared.vcxitems are guarded with Exists('$(HCRoot)\External\boost-wintls\include\wintls.hpp') AND HCEnableWebSocketCompression == 'true'. A consumer who forgets git submodule update --init --recursive gets a working build that silently lacks compression. Suggest emitting an MSBuild <Error> (or at least <Warning>) when HCEnableWebSocketCompression=true and the submodule file is absent.
  • %(PreprocessorDefinitions) inheritance bug sweep. #988 fixes one instance (ASIO_DISABLE_SERIAL_PORT was dropped on the per-file websocketpp_websocket.cpp overrides because shared-items %(PreprocessorDefinitions) doesn't inherit from the consuming project's ItemDefinitionGroup). The same pattern may exist for other per-file overrides added in #965 and should be audited.
Why "turn it off" doesn't free consumers
Platform Issue
Linux websocketpp_websocket.cpp is in the source list unconditionally; External/asio + External/websocketpp are in COMMON_INCLUDE_DIRS unconditionally; install_dependencies.bash installs zlib unconditionally.
Win32/GDK New External/boost-wintls submodule is required for WSC; missing submodule silently disables the feature.
Apple No off switch at all.
Companion PR

A companion PR addresses the first two checklist items. Filing the others here because they involve broader design decisions (Apple build settings; MSBuild error emission; per-file-defines audit) that may warrant author input.

主要语言
C++
星标
295
派生
144
平均合并
2 天 19 小时
30 天内合并 PR
2

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

microsoft/libHttpClient 的其他 Issue

查看 microsoft/libHttpClient 的全部 Issue

相似的 Issue

更多 C++ Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。