是否可以使用travis-ci构建使用cmake,gcc-6和g ++ - 6的c ++应用程序/项目?
答案 0 :(得分:15)
配置travis以使用正确的编译器有点棘手。 这是如何做到的:
首先,您需要将分发设置为可信任(由travis-ci支持的最新版本的ubuntu)并且需要sudo。
dist: trusty
sudo: require
接下来我们设置语言和编译器:
language: cpp
compiler: gcc
到目前为止一切顺利。现在我们可以开始设置apt安装配置:
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- gcc-6
- g++-6
- cmake
这为我们的构建工具的新版本添加了ppa并安装它们。下一步是设置新gcc和g ++的链接。 /usr/local/bin
之前正在搜索/usr/bin
,因此只需gcc
和g++
即可访问我们新安装的第6版编译器。 script:
的开头应如下所示:
script:
- sudo ln -s /usr/bin/gcc-6 /usr/local/bin/gcc
- sudo ln -s /usr/bin/g++-6 /usr/local/bin/g++
如果要验证这些工具的版本,请添加下一行:
- gcc -v && g++ -v && cmake --version
从这些命令返回的版本如下:
gcc: 6.2.0
g++: 6.2.0
cmake: 3.2.2
基本上就是这样。完整的.travis.yml看起来像这样:
dist: trusty
sudo: required
language:
- cpp
compiler:
- gcc
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- gcc-6
- g++-6
- cmake
script:
# Link gcc-6 and g++-6 to their standard commands
- ln -s /usr/bin/gcc-6 /usr/local/bin/gcc
- ln -s /usr/bin/g++-6 /usr/local/bin/g++
# Export CC and CXX to tell cmake which compiler to use
- export CC=/usr/bin/gcc-6
- export CXX=/usr/bin/g++-6
# Check versions of gcc, g++ and cmake
- gcc -v && g++ -v && cmake --version
# Run your build commands next
答案 1 :(得分:4)
我在@ henne90gen的答案中发现了一些错误(或者他们刚刚改变了)。具体做法是:
sudo
。gcc-7
没有安装到/usr/local/bin
,而且已经在PATH
。这应该有效:
dist: trusty
language: cpp
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- gcc-7
- g++-7
script:
- export CC=gcc-7
- export CXX=g++-7
- ...
这是一个较长的例子,其中包括现代版本的Qt(使用QtSVG),并且适用于OSX和Linux。
os:
- linux
- osx
language: cpp
dist: trusty
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- sourceline: "ppa:beineri/opt-qt-5.10.1-trusty"
packages:
- gcc-7
- g++-7
- qt510-meta-minimal
- qt510svg
- qt510imageformats
- qt510tools
before_install:
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
brew update ;
brew install qt5 cmake ;
brew link --force qt ;
fi
script:
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
export CC=gcc-7 ;
export CXX=g++-7 ;
source /opt/qt510/bin/qt510-env.sh ;
fi
- cmake --version
- qmake --version
- ...
答案 2 :(得分:0)
为此苦苦挣扎太长时间之后,添加了一个半相关的解决方案。希望它可以帮助其他人避免花费我在更新travis.yml,提交,等待Travis ...重复直到完成的整个过程中花费的时间。
我在一个Python项目中进行了C扩展,开始在Travis中产生失败的测试,但在本地通过了。最终,我在Xenial环境中将其追溯到gcc
的旧版本。这是Travis YAML文件,终于为我解决了这个问题:
dist: xenial
language: python
before_install:
- sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
- sudo apt-get update -q
- sudo apt-get install -y gcc-7
- export CC=/usr/bin/gcc-7
python:
- "3.6"
- "3.7"
install:
- pip install -r requirements.txt
- python setup.py build_ext --inplace
script:
- python run_tests.py
顺便说一句,还有其他人发现他们想触发Travis基于特定提交的构建,以找出问题出在哪里?
答案 3 :(得分:0)
使用dist: bionic
。这应该满足大多数情况。