据我所知,更改cmake使用的目标C ++编译器的最佳方法是CXX
在调用cmake之前更改环境变量:
$ export CXX="clang++" && cmake --build
特拉维斯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(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
我认为这没有多大意义...
我的问题是:如何在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
使用UNIX平台(GNU工具链)biicode
的默认生成器运行CMake "Unix Makefiles"
。详细了解: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常见问题解答-如何使用其他编译器?)biicode
为使用适当的CMake生成器(Biicode C ++配置)或使用biicode
的自定义工具链(Biicode-使用自定义工具链)本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句