我正在尝试从开源游戏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-dev
、libcurl-gnutls-dev
和libcurl4-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.h
和src/utils/sortutil.h
的文件。