Travis-ciを使用して、cmake、gcc-6、g ++-6を使用するc ++アプリケーション/プロジェクトを構築することはできますか?
適切なコンパイラを使用するようにtravisを構成するのは少し難しいです。これは、それを行う方法です。
まず、ディストリビューションをtrusty(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
の前に検索されるため、新しくインストールされたバージョン6コンパイラはgcc
とg++
だけでアクセスできるようになります。 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
@ 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
- ...
使用する dist: bionic
。これでほとんどのケースが満たされます。
あまりにも長い間これに苦労した後、準関連ソリューションを追加します。うまくいけば、他の誰かが、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ビルドをトリガーして、問題がどこから始まったかを正確に見つけたいと思っていますか?