未找到 cmake 错误 libcurl,但安装了 libcurl4



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

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

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

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

FIND_PACKAGE( CURL REQUIRED libcurl )

最后一个参数libcurl(根据find_package文档)被解释为COMPONENTS列表的元素,在 FindCURL.cmake 的情况下,它被视为 PROTOCOL/FEATURE 规范。显然,libcurl既不意味着协议也不意味着功能。

提交 https://github.com/springlobby/springlobby/commit/252c4cb156c1442ed9b4faec3f26265bc7c295ff 修复此调用

FIND_PACKAGE(CURL REQUIRED)

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

git checkout 0.268

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

#include <string>

到这些文件顶部的包含下方src/battlelist.hsrc/utils/sortutil.h的文件。

最新更新