cmake 报错 libcurl not found,但是安装了 libcurl4

cmake error libcurl not found, but libcurl4 is installed

我正在尝试从开源游戏 TA-Spring 编译 Springlobby 版本 268 客户端。然而,最新版本 (271) 编译得很好。但是当我尝试编译版本 268 时,我得到了 CMake-error:

CMake Error at /usr/share/cmake-3.18/Modules/FindCURL.cmake:163 (message):
  CURL: Required feature libcurl is not found
Call Stack (most recent call first):
  src/CMakeLists.txt:127 (FIND_PACKAGE)

我正在编译 Debian 测试并尝试了库 libcurl4-openssl-devlibcurl-gnutls-devlibcurl4-nss-dev 都没有成功。

游戏:https://springrts.com
大厅 0.271:https://github.com/springlobby/springlobby
大厅 0.268:https://github.com/springlobby/springlobby/tree/0.268
从源安装:https://github.com/springlobby/springlobby/wiki/Installfromsource

从 git 回购构建大厅:

git clone --recursive https://github.com/springlobby/springlobby.git
cd springlobby
cmake .
make
make install

Spring大厅版本 271 使用 libcurl4-openssl-dev,但版本 268 似乎链接到较旧的 libcurl。

版本 268 错误调用 find_package (src/CMakeLists.txt:127):

FIND_PACKAGE( CURL REQUIRED libcurl )

最后一个参数libcurl被解释(根据find_package documentation) as the element of COMPONENTS list, and in case of FindCURL.cmake它被视为PROTOCOL/FEATURE规范。显然,libcurl既不是协议也不是特征。

提交 https://github.com/springlobby/springlobby/commit/252c4cb156c1442ed9b4faec3f26265bc7c295ff 修复了对

的调用
FIND_PACKAGE(CURL REQUIRED)

Springlobby 0.268 支持拥有大多数玩家的旧大厅服务器以及较新的大厅服务器。
所以如果你想编译和使用旧的 0.268 Springlobby,你必须像我已经写的那样 git 克隆当前版本,然后通过以下方式挑选旧版本:

git checkout 0.268

应用 Tsyvarev 在第 127 行 src/CMakeLists.txt 中发布的修复程序。但您还必须添加:

#include <string>

到文件 src/battlelist.hsrc/utils/sortutil.h 下面的 include 在这些文件的顶部。