Drone.io 使用提升库进行C++配置

Drone.io configuration for C++ with Boost libraries

本文关键字:C++ 配置 io Drone      更新时间:2023-10-16

我想配置 drone.io 以自动测试我的C++项目。不幸的是,每次构建都失败,因为SCons找不到我刚刚安装的标头。我从这个开始:

sudo apt-get install g++ bison flex libgmp-dev glpk libboost-all-dev scons
echo 2 | sudo update-alternatives --config gcc
scons -Q runProgramsTests

但每次构建失败时都会显示一条消息:

$ scons -Q runProgramsTests
Your environment does not seem to have header <boost/container/map.hpp>!!
Your environment does not seem to have header <boost/container/set.hpp>!!
Your environment does not seem to have header <boost/container/vector.hpp>!!
Invalid compiler/libraries installation - build terminated!!

负责此消息的构建脚本部分如下所示:

# Assuming that instalation is valid unless proved otherwise
validInstallation = True
conf = Configure(env)
# C++ check
if not conf.CheckCXX():
print('Your environment/C++ compiler is not configured/installed correctly!!')
validInstallation = False
# Header check
for header in [
# standard libraries
'algorithm', 'cstdlib', 'iomanip',
'iostream',  'fstream', 'sstream',
'memory',
'stdexcept', 'string',  'utility',
# boost libraries
'boost/scoped_ptr.hpp',
'boost/shared_ptr.hpp',
'boost/weak_ptr.hpp',
'boost/algorithm/string.hpp',
'boost/assign.hpp',
'boost/bimap/bimap.hpp',
'boost/container/map.hpp',
'boost/container/set.hpp',
'boost/container/vector.hpp',
'boost/program_options.hpp',
'boost/range/adaptor/map.hpp',
'boost/range/adaptor/reversed.hpp',
# Flex library
'FlexLexer.h',
# GNU Multiple Precision library
'gmpxx.h',
# GNU Linear Package Kit
'glpk.h'
]:
if not conf.CheckCXXHeader(header):
print('Your environment does not seem to have header <'+header+'>!!')
validInstallation = False

如果这很重要SConstruct可以在此处找到全部内容。

我不明白为什么找到一些 Boost 包,而有些则找不到。droid.io 页面上,我发现项目生成的存档工件不能超过 10MB 的信息 - 但没有关于已安装库限制的信息。

在调用scons之前运行sudo ldconfig没有帮助,因此对手动设置环境变量没有帮助:

C_INCLUDE_PATH=/usr/include
CPLUS_INCLUDE_PATH=/usr/include

我错过了什么吗?毕竟,我安装了libboost-all-dev它应该包含所有 Boost 库和标头。

终于弄清楚了原因:drone.io 使用旧版本的 Ubuntu(精确),默认使用 Boost 库的 1.46 版,而 Boost.Container 包是在 1.48 版本中添加的。

将设置修改为:

sudo apt-get install bison flex glpk libboost1.48-all-dev
echo 2 | sudo update-alternatives --config gcc
scons -Q runProgramsTests

一切都按预期工作。