2016-09-22 8 views
0

"環境"を切り替える手段として$PATHを編集するパッケージマネージャであるLinux、CMake、Condaを使用しています。つまり、Condaで特別なコマンドを実行すると、$PATHは別のコンパイラを指しています。 $CONDA_PREFIXも変更されています。CMake:環境変数が変更されたときのMakefileの再生成

デフォルトでは、CMakeはこれらの変更に対して敏感ではありません。私はそれが欲しいです。具体的には、別のGCCが$PATHに見つかった場合、あるいは最後にcmakeの明示的呼び出しが行われてから$CONDA_PREFIXが変更された場合に、CMakeが自動的にすべてのMakefileを再生成します。この再生成は、最上位のCMakeLists.txtファイルを編集するときにCMakeが行う処理と似ています。次にmakeを実行すると、すべてを再生成します。

私はCMakeを使用して簡単な方法でこれを行うことができますか?

+0

自然なアプローチは、すべての追加の「環境」に対して新しいビルドツリーを作成するようです。 – Tsyvarev

+0

@Tsyvarev:あなたが意味することを理解していますが、それは問題を解決しません。ユーザーが間違った(不一致の)Conda環境とCMakeビルドツリーに誤っていると、ビルドに欠陥がある可能性があります。ビルドが決してミスマッチでないことを確認しようとしています。 –

+0

ターゲットを(add_custom_targetを介して)追加することができます。これにより、ビルドツリーが現在の環境に対応しているかどうかがチェックされます。不一致のビルドの場合、ターゲットは単に適切なメッセージで失敗する可能性があります。 CMakeを再実行することを強制する(たとえば、[そのメール(http://public.kitware.com/pipermail/cmake/2010-November/040777.html)])は、*部分的な再設定が必要な場合に便利です。しかし、コンパイラーが変更されると、実際にはきれいな構成(クリーンビルドディレクトリー上の 'cmake'呼び出し)であるすべてのコンパイラー関連のキャッシュを破棄する必要があります。 – Tsyvarev

答えて

0

要するに、生成されたビルドディレクトリは環境に依存しなくてはなりません。

ユーザが間違った(ミスマッチ)Conda環境とCMakeビルドツリーの間違っている場合、ビルドに欠陥がある可能性があります。

find_program()コマンドを使用して、使用しているすべてのツールのパスを判断した場合、これは起こりません。すべてのツールにフルパスを使用し、各環境設定のビルドディレクトリを持つことは、この問題を処理するための好ましい方法です。

関連する問題