2

私は C++ 言語を使用するプロジェクトに取り組んでいます (ただし、これは実際には C++ 固有の質問ではありません)。私のシステムには、複数の C++ コンパイラがインストールされており、同じコンパイラの複数のバージョンがあり、おそらくいくつかのバージョンは自分自身のホーム ディレクトリにビルドされています。私はさまざまな目的で (C++ の) さまざまなコンパイラを使用しています (ただし、質問をより一般的なものにするために、ここでは少し誇張しています)。

現在、私のプロジェクトは、何らかの理由で、clang ではなく gcc であるコンパイラーと、新しいバージョンを優先する 4.7 から 4.9 の間のバージョンに依存しています。

私が持っている関連するコンパイラをCMakeに見つけさせ、有効なものがあれば利用可能な最高のものを使用したいと思っています。しかし、これは自分のシステムだけでなく実現したいのです。強制するのはとても簡単です。CMakeLists.txtのカスタマイズを行ったり、コンパイラを明示的に設定したりする私のコードを取得する開発者に依存しないくださいCXX=/some/thing

より具体的には:

  • CMake がコンパイラを探す場所の種類に影響を与えるにはどうすればよいですか?
  • これらの場所が検索される順序に影響を与えるにはどうすればよいですか?
  • 特定のコンパイラ プロバイダとバージョンの好みをどのように表現できますか?
  • コンパイラ プロバイダとバージョンの制約をどのように表現できますか?

ノート:

  • CMake 3.x でのみ機能する回答は関連性がありますが、 CMake 2.8.x にも興味があります。
  • RTFM に教えてもらえますが、具体的にどの FM と FM のどこにあるか (そして、それが実際に役立つかどうか) を教えてください。
  • 問題が発生した場合に備えて、Linuxで作業しています。
4

1 に答える 1

0

CXX が設定されていないか、または -DCMAKE_CXX_COMPILER が CMake 呼び出しに渡されていない限り、CMake は /usr/bin/c++ を使用しています。

見つかったコンパイラのバージョンは CMAKE_CXX_COMPILER から取得でき、不十分な場合はエラーが発生します。可変個引数テンプレートなどの特定の C++ コンパイラ機能をチェックする場合も同様です。
しかし、いくつかのコンパイラをチェックして、CMake で 1 つを選択する方法がわかりません。

于 2016-01-22T21:37:44.277 に答える