如何在Travis CI中使用最新的Boost版本?

Vik*_*tor 5 c++ boost travis-ci

我试图以boost 1.64多种方式在Travis CI环境中进行安装。但是他们都没有成功。在我的第一次天真尝试中,我只是在travis脚本中添加了以下行:

install:
  - sudo apt-get install libboost1.64-all-dev
Run Code Online (Sandbox Code Playgroud)

结果是错误消息:找不到软件包libboost1.64-all-dev

在第二次尝试中,我指定了具有必要boost版本的存储库。

before_install:
  - sudo add-apt-repository -y ppa:nschloe/boost-nightly
  - sudo apt-get update -qq
install:
  - sudo apt-get install libboost-all-dev
  # - sudo apt-get install libboost1.64-all-dev (also tried)
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,boost已安装默认版本(1.54)。在第二种情况下,结果是相同的错误消息:找不到软件包libboost1.64-all-dev

在第三次尝试中,我手动输入了安装说明boost

install:
  - sudo wget -O boost_1_64_0.tar.gz http://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.gz/download
  - sudo tar xzvf boost_1_64_0.tar.gz
  - cd boost_1_64_0/
  - sudo ./bootstrap.sh --prefix=/usr/local
  - sudo ./b2
  - sudo ./b2 install 
Run Code Online (Sandbox Code Playgroud)

结果,我的脚本花费了30多分钟,然后被终止。除了默认的Boost版本以外,是否有任何简单(或仅可行)的方法将其安装到Travis CI?

Spa*_*ose 6

预编译Boost

这是我按照以下步骤进行操作的步骤:

  1. 启动板上搜索,直到找到最近针对该trusty环境构建的boost软件包。这是不平凡的,但有从当前保持PPA mhier称为libboost-latest

  2. 我发现可以.travis.yml正确配置 ppa以使其平凡无奇,因此我在下面提供了一个有效的代码段,希望该代码段可以帮助其他遇到相同问题的人。

以下适用于clang和gcc:

language: cpp
dist: trusty
sudo: false
os: linux

matrix:
  include:
    - env: COMPILER=g++-6 BUILD=Debug STANDARD=14
      compiler: gcc
      addons:
        apt:
          update: true
          sources:
            - sourceline: 'ppa:mhier/libboost-latest'
            - ubuntu-toolchain-r-test
          packages:
            - g++-6
            - boost1.67
    - env: COMPILER=g++-6 BUILD=Release STANDARD=14
      compiler: gcc
      addons:
        apt:
          update: true
          sources:
            - sourceline: 'ppa:mhier/libboost-latest'
            - ubuntu-toolchain-r-test
          packages:
            - g++-6
            - boost1.67
# the rest of your yaml file...
Run Code Online (Sandbox Code Playgroud)

希望mhier将使该ppa运行一段时间,否则,您将必须执行步骤1或提供自己的ppa。随着增强版本号的进展,软件包号将更改,因此请检查ppa页面以使软件包名称保持最新。

完整的工作示例可以在 monstar github项目中找到

从源代码 编译增强功能尽管也存在超时的风险,但是您也可以在travis构建中从源代码编译增强功能。有关说明,请参见boost的最佳做法手册的第 12条


axa*_*lis 5

要查看所有可用的软件包(尤其是在添加额外的存储库时),可以运行“ apt-cache search”命令,例如:

sudo apt-cache search libboost
Run Code Online (Sandbox Code Playgroud)

然后,您可以看到可用的版本。

手动构建时,默认情况下会构建“所有内容”(所有静态/共享的调试/发布库),这将花费大量时间,因此可能会超时。

您可以尝试仅构建实际需要的库,例如:

./bootstrap.sh --with-libraries=program_options,filesystem,system
./b2 link=shared threading=multi variant=release
Run Code Online (Sandbox Code Playgroud)

(有关详细信息,请参见此处:http : //www.boost.org/build/doc/html/bbv2/overview/invocation.html