在travis上使用不同的libc ++版本进行clang

时间:2017-08-29 18:36:00

标签: c++ makefile travis-ci apt-get libc++

Travis使用Ubuntu Trusty,默认的libc ++版本为svn199600

但是我想测试不同的(较新的)版本,因为我已经使用不同的clang版本。

我当前的.travis.yml如下所示:

language: generic

dist: trusty
sudo: required

matrix:
    include:
    - env: CXX=g++-7 CC=gcc-7
      addons:
        apt:
          packages:
            - g++-7
          sources: &sources
            - ubuntu-toolchain-r-test
            - llvm-toolchain-precise
            - llvm-toolchain-precise-3.9
            - llvm-toolchain-precise-3.8
            - llvm-toolchain-precise-3.7
            - llvm-toolchain-precise-3.6
            - sourceline: 'deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-4.0 main'
              key_url: 'http://apt.llvm.org/llvm-snapshot.gpg.key'
    - env: CXX=g++-6 CC=gcc-6
      addons:
        apt:
          packages:
            - g++-6
          sources: *sources
    - env: CXX=g++-5 CC=gcc-5
      addons:
        apt:
          packages:
            - g++-5
          sources: *sources
    - env: CXX=g++-4.9 CC=gcc-4.9
      addons:
        apt:
          packages:
            - g++-4.9
          sources: *sources
    - env: CXX=clang++-4.0 CC=clang-4.0
      addons:
        apt:
          packages:
            - clang-4.0
            - libc++-dev
          sources: *sources
    - env: CXX=clang++-3.9 CC=clang-3.9
      addons:
        apt:
          packages:
            - clang-3.9
            - libc++-dev
          sources: *sources
    - env: CXX=clang++-3.8 CC=clang-3.8
      addons:
        apt:
          packages:
            - clang-3.8
            - libc++-dev
          sources: *sources
    - env: CXX=clang++-3.7 CC=clang-3.7
      addons:
        apt:
          packages:
            - clang-3.7
            - libc++-dev
          sources: *sources
    - env: CXX=clang++-3.6 CC=clang-3.6
      addons:
        apt:
          packages:
            - clang-3.6
            - libc++-dev
          sources: *sources

script:
    - ./build_and_test.sh

before_install:
    - ./before_install.sh

例如,使用libc++-dev替换libc++-dev-3.9无效(仍​​使用旧库版本),即使添加以下行也是如此:

- sourceline: 'deb-src http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.9 main'

我还尝试将以下内容添加到before_install.sh但未成功(也是旧库):

sudo apt-add-repository "deb http://llvm.org/apt/trusty/ llvm-toolchain-trusty-3.9 main"   
sudo apt-get update   
sudo apt-get install -y libc++-dev libc++-helpers libc++1 libc++abi-dev lldb-3.9

如果没有从源代码构建,它是如何正确完成的?

1 个答案:

答案 0 :(得分:3)

看起来如果不从源代码构建就无法做到这一点。 range-v3库使用a script完成此操作。

我调整了我的language: generic dist: trusty sudo: required matrix: include: - os: linux compiler: gcc env: GCC_VERSION=7 - CC=gcc-7 - CXX=g++-7 addons: apt: sources: ['ubuntu-toolchain-r-test'] packages: ['g++-7'] - os: linux compiler: gcc env: GCC_VERSION=6 - CC=gcc-6 - CXX=g++-6 addons: apt: sources: ['ubuntu-toolchain-r-test'] packages: ['g++-6'] - os: linux compiler: gcc env: GCC_VERSION=5 - CC=gcc-5 - CXX=g++-5 addons: apt: sources: ['ubuntu-toolchain-r-test'] packages: ['g++-5'] - os: linux compiler: clang env: CLANG_VERSION=5.0 LIBCXX=On - CC=clang-5.0 - CXX=clang++-5.0 addons: apt: sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-5.0'] packages: ['clang-5.0', 'g++-6'] - os: linux compiler: clang env: CLANG_VERSION=4.0 LIBCXX=On - CC=clang-4.0 - CXX=clang++-4.0 addons: apt: sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-4.0'] packages: ['clang-4.0', 'g++-6'] - os: linux compiler: clang env: CLANG_VERSION=3.9 LIBCXX=On - CC=clang-3.9 - CXX=clang++-3.9 addons: apt: sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-3.9'] packages: ['clang-3.9', 'g++-6'] - os: linux compiler: clang env: CLANG_VERSION=3.8 LIBCXX=On - CC=clang-3.8 - CXX=clang++-3.8 addons: apt: sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-3.8'] packages: ['clang-3.8', 'g++-6'] before_install: - wget https://raw.githubusercontent.com/onqtam/doctest/master/doctest/doctest.h - sudo mv ./doctest.h /usr/local/include/doctest.h - | if [ -n "$GCC_VERSION" ]; then export CXX="g++-${GCC_VERSION}" CC="gcc-${GCC_VERSION}" fi if [ -n "$CLANG_VERSION" ]; then export CXX="clang++-${CLANG_VERSION}" CC="clang-${CLANG_VERSION}" fi if [ "$LIBCXX" == "On" ]; then sudo apt-get purge cmake sudo apt-get install cmake3 cmake --version sudo CXX="$CXX" CC="$CC" sudo ./cmake/install_libcxx.sh export CXXFLAGS="-stdlib=libc++" fi install: - mkdir -p build && cd build - cmake .. -DUNITTEST=ON script: - which $CXX - $CXX --version - cmake --build . --target unittest --config Release -- -j4 也使用了它:

<View style={{ flex: 1, backgroundColor: '#f3f3f3' }}>
  <MainTabNavigator /> // The tabbar created from react-navigation
  <TabBar navigation={tabNavigation} /> // My custom tabbar
</View>