8

私の知る限り、cmake で使用されるターゲット C++ コンパイラを変更する最善の方法は、CXXcmake の呼び出しの直前に環境変数を変更することです。

$ export CXX="clang++" && cmake --build

Travis CI ビルドは、ビルドの設定CXXCC応じて と を設定します。したがって、これがあなたの中にある場合.travis.yml:

language: cpp
compiler: 
  - gcc
  - clang

script:
  - cmake --build
  - ./bin/foo

初めてcmakeGCCを使用し、後者でClangを使用する必要がありますか?

代わりに、GCC ビルドは問題なくコンパイルされます (cmake で使用されるデフォルトのコンパイラ) が、Clang バージョンも GCC を使用します。

0.01s$ echo $CC $CXX
clang clang++
コマンド「echo $CC $CXX」は 0 で終了しました。

0.02s$ $CXX --version
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

これはあまり意味がないと思います...

これはGCCを使用した成功したビルドで、これは (と思われる) clang ビルドです。

私の質問は次のとおりです: Travis CI で cmake が使用するコンパイラを変更するにはどうすればよいですか?

これが私の .travis.yml です

4

2 に答える 2

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

biicodeのコマンドは、UNIX プラットフォーム (GNU ツールチェーン) 用のデフォルトのジェネレーターでbii cpp:buildCMake を実行します。それについて読んでください: Biicode C++ documentation - Generators and IDEsbiicode"Unix Makefiles"

この動作はログに見られます: Running: cmake -G "Unix Makefiles" -Wno-dev ../cmake( https://travis-ci.org/Manu343726/Turbo/jobs/33889114、行 257)

CMake は常に環境変数を検索するとは限りません( CMake FAQCXX/CCに記載されているように)。選択したジェネレーターによって異なります。ジェネレーターなしで CMake を呼び出すと、うまくいきます (私の travis ファイル: https://github.com/quepas/Graph-ene/blob/master/.travis.yml )。

ソリューション

  • cmake -D方法 2 で説明されている形式で CMake を単独で使用する( CMake FAQ - How do I use a different compiler? )
  • biicode適切な CMake のジェネレーター ( Biicode C++ 構成) を使用するか、biicodeカスタム ツールチェーン ( Biicode -カスタム ツールチェーンの使用)を使用するようにセットアップします。
于 2014-10-19T09:25:42.010 に答える