Ändern Sie den C ++ - Compiler für CMake unter TravisCI

8

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:

%Vor%

Beim Travis-CI-Build werden die CXX und CC entsprechend den Einstellungen des Builds festgelegt. Also wenn du das in deinem .travis.yml hast:

%Vor%

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: posix

     

Running: 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.

    
Manu343726 29.08.2014, 11:30
quelle

2 Antworten

10

Erklärung

In Ihrem .travis.yml sehen wir:

%Vor%

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: Ссылка ) ).

Lösungen

Quepas 19.10.2014, 09:25
quelle
0

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.

Zypern

    
ollo 19.11.2016 17:31
quelle

Tags und Links