Is it possible to get Travis CI working with Clang that is capable of C++11? (I want Clang, not GCC, I already have GCC 4.8 working in Travis CI.) It appears that the version that is there pre-installed is not C++11 capable. All my attempts at installing any newer version end up failing because of this:
In file included from /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/move.h:57: /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/type_traits:269:39: error: use of undeclared identifier '__float128' struct __is_floating_point_helper<__float128>
I have seen the -D__STRICT_ANSI__
trick but that clashes with other things for me.
Is it possible to get it working? See also my .travis.yml.
sudo: false dist: trusty language: cpp os: - linux compiler: - gcc - clang install: # /usr/bin/gcc is 4.6 always, but gcc-X.Y is available. - if [[ $CXX = g++ ]]; then export CXX="g++-4.9" CC="gcc-4.9"; fi # /usr/bin/clang has a conflict with gcc, so use clang-X.Y. - if [[ $CXX = clang++ ]]; then export CXX="clang++-3.5" CC="clang-3.5"; fi addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise-3.5 # not sure why we needed this packages: - gcc-4.9 - g++-4.9 - clang-3.5
(The explicit sudo: false
will let it build in Docker (for speed) even if you have a pre-docker repo, according to Travis support.)
Thanks to solarce at Travis support for noticing my error and fixing the docs.
Here is a part of my .travis.yml files (mostly taken from this file).
language: cpp compiler: - clang - gcc before_install: # g++4.8.1 - if [ "$CXX" == "g++" ]; then sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; fi # clang 3.4 - if [ "$CXX" == "clang++" ]; then sudo add-apt-repository -y ppa:h-rayflood/llvm; fi - sudo apt-get update -qq install: # g++4.8.1 - if [ "$CXX" = "g++" ]; then sudo apt-get install -qq g++-4.8; fi - if [ "$CXX" = "g++" ]; then export CXX="g++-4.8"; fi # clang 3.4 - if [ "$CXX" == "clang++" ]; then sudo apt-get install --allow-unauthenticated -qq clang-3.4; fi - if [ "$CXX" == "clang++" ]; then export CXX="clang++-3.4"; fi script: - $CXX --version
EDIT because it can be very useful to add libc++ for travis. Up to my knowledge, there is no Linux package for libc++, so one has to compile it "by hand". Do not forget -stdlib=libc++ in CXXFLAGS while compiling with clang.
install: # clang 3.4 - if [ "$CXX" == "clang++" ]; then sudo apt-get install --allow-unauthenticated -qq clang-3.4; fi - if [ "$CXX" == "clang++" ]; then export CXXFLAGS="-std=c++0x -stdlib=libc++"; fi - if [ "$CXX" == "clang++" ]; then svn co --quiet http://llvm.org/svn/llvm-project/libcxx/trunk libcxx; fi - if [ "$CXX" == "clang++" ]; then cd libcxx/lib && bash buildit; fi - if [ "$CXX" == "clang++" ]; then sudo cp ./libc++.so.1.0 /usr/lib/; fi - if [ "$CXX" == "clang++" ]; then sudo mkdir /usr/include/c++/v1; fi - if [ "$CXX" == "clang++" ]; then cd .. && sudo cp -r include/* /usr/include/c++/v1/; fi - if [ "$CXX" == "clang++" ]; then cd /usr/lib && sudo ln -sf libc++.so.1.0 libc++.so; fi - if [ "$CXX" == "clang++" ]; then sudo ln -sf libc++.so.1.0 libc++.so.1 && cd $cwd; fi - if [ "$CXX" == "clang++" ]; then export CXX="clang++-3.4"; fi
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With