непрерывная интеграция — конфигурация Drone.io для C ++ с библиотеками Boost

Я хочу настроить 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 я обнаружил информацию о том, что архивные артефакты, созданные проектом, не могут превышать 10 МБ, но не было информации о лимите установленных библиотек.

Бег sudo ldconfig перед звонком scons не помогло и не помогло вручную настроить переменные окружения:

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

Я что-то пропустил? После всего, что я установил libboost-all-dev который должен содержать ВСЕ библиотеки Boost и заголовки.

0

Решение

Наконец выяснили причину: 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

все работает как положено.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector