Man*_*726 8 c++ cmake travis-ci biicode
到目前为止,我知道更改cmake使用的目标C++编译器的最佳方法是CXX在调用cmake之前更改环境变量:
$ export CXX="clang++" && cmake --build
Run Code Online (Sandbox Code Playgroud)
Travis CI构建设置CXX并CC相应地设置构建.所以,如果你有这个.travis.yml:
language: cpp
compiler:
- gcc
- clang
script:
- cmake --build
- ./bin/foo
Run Code Online (Sandbox Code Playgroud)
第一次cmake应该使用GCC和后者的Clang不是?
相反,GCC构建编译得很好(它是cmake使用的默认编译器),但Clang版本也使用GCC:
0.01s $ echo $ CC $ CXX
clang clang ++
命令"echo $ CC $ CXX"退出0.0.02s $ $ CXX --version
clang version 3.4(tags/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
Run Code Online (Sandbox Code Playgroud)
我觉得这没什么意义......
我的问题是:如何在Travis CI下更改cmake使用的编译器?
这是我的.travis.yml.
Que*_*pas 11
在你.travis.yml我们看到:
- if [ "$CXX" == "clang++" ]; then export CXX="clang++" && bii cpp:build; fi
- if [ "$CXX" == "g++" ]; then export CXX="g++" && bii cpp:build; fi
Run Code Online (Sandbox Code Playgroud)
biicode的命令bii cpp:build运行CMake biicode的默认生成器,"Unix Makefiles"用于UNIX平台(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方法2中描述的格式(CMake FAQ - 如何使用其他编译器?)biicode使用正确的CMake生成器(Biicode C++配置)或使用biicode自定义工具链(Biicode - 使用自定义工具链)