[英]How to properly configure CodeCov for a C++ w/ CMake project in TravisCI?
[英]Change C++ compiler for cmake under TravisCI
到目前為止,我知道更改cmake使用的目標C ++編譯器的最佳方法是在調用cmake之前更改CXX
環境變量:
$ export CXX="clang++" && cmake --build
Travis CI構建根據構建的設置相應地設置CXX
和CC
。 所以如果你的.travis.yml
有這個:
language: cpp
compiler:
- gcc
- clang
script:
- cmake --build
- ./bin/foo
cmake
第一次應該使用GCC和后者的Clang不是嗎?
相反,GCC構建編譯得很好(它是cmake使用的默認編譯器),但Clang版本也使用GCC:
0.01s $ echo $ CC $ CXX
clang clang ++
命令“echo $ CC $ CXX”退出0。0.02s $ $ CXX - 版本
clang 3.4版(標簽/ RELEASE_34 / final)目標:x86_64-unknown-linux-gnu線程模型:posix運行:cmake -G“Unix Makefiles”-Wno-dev ../cmake
- C編譯器標識是GNU
- CXX編譯器標識是GNU
- 檢查工作的C編譯器:/ usr / bin / gcc
- 檢查工作C編譯器:/ usr / bin / gcc - 工作
- 檢測C編譯器ABI信息
- 檢測C編譯器ABI信息 - 完成
- 檢查CXX編譯器是否正常工作:/ usr / bin / c ++
- 檢查工作CXX編譯器:/ usr / bin / c ++ - 有效
- 檢測CXX編譯器ABI信息
- 檢測CXX編譯器ABI信息 - 完成
我甚至試圖在調用之前再次設置這些變量:
- if [ "$CXX" == "clang++" ]; then export CXX="clang++" && cmake --build; fi
- if [ "$CXX" == "g++" ]; then export CXX="g++" && cmake --build; fi
我覺得這沒什么意義......
這是使用GCC的成功構建, 這里是(假定為)clang構建。
我的問題是: 如何在Travis CI下更改cmake使用的編譯器?
這是我的.travis.yml。
在.travis.yml
我們看到:
- if [ "$CXX" == "clang++" ]; then export CXX="clang++" && bii cpp:build; fi
- if [ "$CXX" == "g++" ]; then export CXX="g++" && bii cpp:build; fi
biicode
的命令bii cpp:build
使用biicode
的默認生成器運行CMake,這是UNIX平台的"Unix Makefiles"
(GNU工具鏈)。 閱讀: Biicode C ++文檔 - 生成器和IDE 。
這種行為被認為是在你的日志: Running: cmake -G "Unix Makefiles" -Wno-dev ../cmake
( https://travis-ci.org/Manu343726/Turbo/jobs/33889114 ,257行)
CMake並不總是尋找環境變量CXX/CC
(如CMake FAQ中所述 )。 這取決於選定的發電機。 當我打電話給沒有發電機的CMake時,它適用於我(我的travis文件: https : //github.com/quepas/Graph-ene/blob/master/.travis.yml )。
cmake -D
格式( CMake FAQ - 如何使用不同的編譯器? ) biicode
使用正確的CMake生成器( Biicode C ++配置 )或使用biicode
的自定義工具鏈( Biicode - 使用自定義工具鏈 ) 你可以使用矩陣。 如果您有許多不同的編譯器(例如gcc5,gcc6,clang3.7,clang3.8),這將特別有用:
language: generic # Works better in most cases
matrix:
include:
- env: CXX=g++ CC=gcc
# additional apt settings if needed
- env: CXX=clang++ CC=clang
script:
- ...
如果你有不同版本的編譯器,可以擴展:
[…]
matrix:
include:
- env: CXX=g++-5 CC=gcc-5
- env: CXX=g++-6 CC=gcc-6
- env: CXX=clang++-3.8 CC=clang-3.8
[…]
它也不會復制腳本步驟並保持文件清除if ... else ...部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.