簡體   English   中英

如何在Travis CI上使用C ++ 17安裝clang?

[英]How to install clang with C++17 on Travis CI?

我正在嘗試使用clang 4.0設置Trevis CI。 我需要C ++ 17支持。 我使用以下腳本:

language: cpp
sudo: required

os:
    - linux

compiler:
    - clang

env:
    - TARGET_CPU=x86 BUILD_CONFIGURATION=Debug
    - TARGET_CPU=x86 BUILD_CONFIGURATION=Release
    - TARGET_CPU=x64 BUILD_CONFIGURATION=Debug
    - TARGET_CPU=x64 BUILD_CONFIGURATION=Release
    - TARGET_CPU=amd64 BUILD_CONFIGURATION=Debug
    - TARGET_CPU=amd64 BUILD_CONFIGURATION=Release

before_install:  
  - sudo apt-add-repository "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-4.0 main"
  - sudo apt-get update -qq

install: 
  - sudo apt-get install libboost-all-dev
  - sudo apt-get install --allow-unauthenticated -qq clang++-4.0
  - export CXX="clang++-4.0"

script:
    - mkdir build
    - cd build
    - cmake .. -DTARGET_CPU=$TARGET_CPU -DCMAKE_BUILD_TYPE=$BUILD_CONFIGURATION
    - make

盡管鐺4.0的安裝成功構建失敗消息: error: no member named 'make_unique' in namespace 'std' 這意味着我什至沒有C ++ 11支持。 我該如何解決? 我錯過了travis.yml嗎?

您的Clang版本應該還不錯,問題是(根據我的經驗)Travis不尊重各種CMake配置。 出於某種原因,以我的經驗,Travis CI似乎忽略了CMake中的CMAKE_CXX_STANDARD變量。

例如,Travis將忽略我的CMakeLists.txt中的以下行(對於C ++ 11)。

set(CMAKE_CXX_STANDARD 11)
set(CXX_STANDARD TRUE)

如果手動添加標志,則可以成功構建:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

對於C ++ 17,您想將其更改為set(CMAKE_CXX_STANDARD 17)set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1z")

這些都不是理想的,IMO,但這是一個可解決的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM