2011-03-16 5 views
1

cmakeでenable_languageを使用する場合、常に特定のデフォルトシーケンスでコンパイラを検索します。私はこのシーケンスをどう変えることができるのだろうか。たとえば、私のシステムにifort(icc)とgfortran(g ++)の両方がインストールされていて、gfortran(g ++)の代わりにifort(icc)を使いたいのであれば、どうすれば設定できますか?enable_language [cmake]を使用する場合のコンパイラの優先順位の指定方法

CLARIFICATION:変数CMAKE_Fortran_Compilerを変更してコンパイラを明示的に切り替えることができますが、ユーザーがそのような設定を指定していない場合、cmakeが利用可能なコンパイラを検索するデフォルトシーケンスを変更することです。

回避策は、プロジェクト(xxx)の前にCMAKE_Fortran_Compilerを設定して、後でこの変数を上書きすることはできないようにすることですが、もしあればgfortranが必要なので、これは最善の方法ではありません利用可能なものではないことが判明しました。

ところで、このような情報を探すには最適な場所は何ですか?ドキュメントは完全ではないようです。

ありがとう!

+0

タグ 'C++'、 'fortran'、さらには' compiler'も適切だとは思いません。質問は、言語とその実装とは関係がありません。それは本当にcmakeについてだけです。 – eriktous

+0

この情報を探すのに最適な場所は、StackOverflow(grin)かCMakeメーリングリストです。 Wikiや組み込みのドキュメントではよく解答が出ますが、このようなことは多くの場合道端に残っています。私はあなたが探しているものに他の解決策を見つけていません。 – metasim

答えて

0

ccmake .. -DCMAKE_Fortran_Compiler=<executable><executable>は、コンパイラの名前またはコンパイラのフルパスのいずれか)を使用して、使用するコンパイラを指定することはできますが、CMakeLists.txtに設定するのではなく、

+0

私はこの変数を設定することでコンパイラを指定できますが、ユーザーが明示的に使用するコンパイラを明示していない場合、cmakeが利用可能なコンパイラを検索するデフォルトのシーケンスを変更することです。たとえば、システムにifortとgfortranの両方がある場合、デフォルトの動作であるgfortranの代わりにifortを指定します。 –

1

正しい場所はCMakeのFAQです。answers your questionです。

オメガセの答えは、CC=/path/to/icc cmake ...と同様に、this discussion threadも参照してください。

を設定する前に、の電話番号はです(よくある質問に記載されています)。それが内部enable_languageを呼び出しますので、手動でenable_languageを呼び出す

注意は、(その場合には、彼らがCCXXをデフォルトと、それらを指定していない、実際または)project呼び出しで言語を指定すると違いはありません。

+0

FAQは私の質問に答えていません。私はオリジナルの投稿を明確にしました(また、Omegaiceへの返信として) –

関連する問題