【发布时间】:2018-02-07 07:47:56
【问题描述】:
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-3.9 替换libc++-dev 没有帮助(仍然使用旧的库版本),即使添加以下行:
- 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
如何在不从源代码构建的情况下正确完成?
【问题讨论】:
-
“没有帮助”是什么意思?构建是否失败?它是否使用错误的库构建?无需先卸载
libc++-dev,这对您在本地有效吗? -
@kichik 感谢您的评论。问题是它仍然使用旧库构建。我相应地更新了我的问题。
-
在您的 env: 行中,您可以提供
LDFLAGS="-L /path/to/libary" LDLIBS="-l :libc++-dev-3.9.so"例如以在提供给 LDFLAGS 的路径中找到该 lib(假设它是一个 .so 文件,无论如何,因为我在LDLIBS 中的名称,它必须是确切的文件名,因此如果是静态链接的,它可能是 .a)。我个人不使用 travis,但是 env 行看起来像 makefile 的东西,并且上面的 vars 与 Makefiles 一起使用,所以希望它有效。 -
@strobelight 谢谢,我也试过这个,但没有任何改变。
-
我认为这根本与 travis 无关。就像 strobelight 所说:您必须为构建脚本提供参数并确保它选择正确的库。如果您的构建脚本不使用 LDFLAGS LDLIBS 变量,您必须查看构建脚本并找出它们的名称,或者您必须添加它们。
标签: c++ makefile travis-ci apt-get libc++