Soweit ich weiß, ist der beste Weg, den von CMake verwendeten C ++ - Zielcompiler zu ändern, darin zu bestehen, die Umgebungsvariable CXX
unmittelbar vor dem Aufruf von cmake zu ändern:
Beim Travis-CI-Build werden die CXX
und CC
entsprechend den Einstellungen des Builds festgelegt. Also wenn du das in deinem .travis.yml
hast:
Das erste Mal cmake
sollte GCC und Clang auf letzterem nicht verwenden?
Stattdessen kompiliert der GCC Build kompiliert gut (Es ist der Standard-Compiler von cmake verwendet), aber die Clang-Version verwendet auch GCC:
0.01s $ echo $ CC $ CXX
Klangklang +++ Der Befehl "echo $ CC $ CXX" wird mit 0 beendet.0.02s $ $ CXX --Version
clang Version 3.4 (tags / RELEASE_34 / final) Ziel: x86_64-unknown-linux-gnu Threadmodell: posixRunning: cmake -G "Unix-Makefiles" -Wno-dev ../cmake
- Die C-Compiler-Kennung lautet GNU
- Die CXX-Compiler-Kennung lautet GNU
- Auf funktionierenden C-Compiler prüfen: / usr / bin / gcc
- Überprüfen Sie, ob C-Compiler funktioniert: / usr / bin / gcc - funktioniert - C-Compiler ABI-Info erkennen - C-Compiler-ABI-Informationen erkennen - fertig - Auf funktionierenden CXX-Compiler prüfen: / usr / bin / c ++
- Überprüfen Sie, ob der CXX-Compiler funktioniert: / usr / bin / c ++ - funktioniert - CXX-Compiler ABI-Info erkennen - CXX-Compiler-ABI-Informationen erkennen - done
Ich habe sogar versucht, diese Variablen kurz vor dem Aufruf erneut zu setzen:
%Vor%Was hat nicht viel Sinn, denke ich ...
Hier ist der erfolgreiche Build mit GCC und hier soll der (vermutlich) klingende Build sein.
Meine Frage ist: Wie kann ich den Compiler ändern, der von CMake unter Travis CI verwendet wird?
Hier ist meine .travis.yml.
In Ihrem .travis.yml
sehen wir:
biicode
s Befehl bii cpp:build
führt CMake mit biicode
's Standardgenerator aus, der "Unix Makefiles"
für die UNIX-Plattform (GNU toolchain) ist. Lesen Sie darüber: Biicode C ++ - Dokumentation - Generatoren und IDEs .
Dieses Verhalten wird in Ihren Protokollen angezeigt: Running: cmake -G "Unix Makefiles" -Wno-dev ../cmake
( Ссылка , Zeile 257)
CMake sucht nicht immer nach den Umgebungsvariablen CXX/CC
(wie in CMake FAQ angegeben). Es hängt vom ausgewählten Generator ab. Es funktioniert für mich, wenn ich CMake ohne Generator anrufe (meine Travis-Datei: Ссылка ) ).
cmake -D
-Format beschrieben in Methode 2 ( CMake FAQ - Wie verwende ich einen anderen Compiler ? ) biicode
ein, um den richtigen CMake-Generator zu verwenden ( Bicode C ++ Konfiguration ) oder verwenden Sie die benutzerdefinierte Toolchain von biicode
( Bicode - Using benutzerdefinierte Toolchain ) Sie können eine Matrix verwenden. Dies ist besonders nützlich, wenn Sie viele verschiedene Compiler haben (zB. Gcc5, gcc6, clang3.7, clang3.8):
%Vor%Wenn Sie verschiedene Versionen eines Compilers haben, kann dies erweitert werden:
%Vor%Es werden auch die Scriptschritte nicht dupliziert und die Datei bleibt sauber von if ... else ... parts.