既存のコンパイラを使用するユーティリティは、コマンドを接頭辞として追加することで(cc -c file.c
を呼び出すのではなくdistcc cc -c file.c
と呼ぶことができます)CMake(distcc、ccache)でのコンパイラプレフィックスコマンドの使用
CMakeを使用するとコンパイラコマンドを変更できますが、distcc
を使用しようとすると問題が発生しましたが、これはコンパイラのコマンドプレフィックス(ccache
も)に当てはまります。
CMakeのは、コンパイラは絶対パスであることを期待
そう/usr/bin/distcc /usr/bin/cc
からCMAKE_C_COMPILER
設定、エラーを与える:
開始する/usr/bin/distcc
及びCMAKE_C_COMPILER_ARG1
またはCMAKE_C_FLAGS
にコンパイラを設定/usr/bin/distcc /usr/bin/cc is not a full path to an existing compiler tool.
/usr/bin/cc
を使用するとエラーが発生することがありますが、失敗するのはCHECK_C_SOURCE_COMPILES
ですこれをサポートする何らかの方法がありましたが、接頭辞プレフィックスCMAKE_REQUIRED_FLAGS
は動作しませんでした)。
私はこれを行うために見つけた唯一の方法は、シェルスクリプトでコマンドをラップすることです。
#!/bin/sh
exec /usr/bin/distcc /usr/bin/cc "[email protected]"
これは動作しますが、シェルスクリプト(ビルドシステムは、単にコマンドプレフィックスを使用することができたときにいくつかの小さなオーバーヘッドを与える)にもかかわらず移動することなく、CMakeのでコンパイラヘルパーを使用できるようにするとよいでしょう。
だから私の質問は次のとおりです。
cmakeのは、シェルスクリプトラッパーなしで?,直接(例えばdistccのような)コンパイラ接頭辞コマンドを使用することはできますか?
はあなた' CC'/'CXX'環境変数を設定していますcmake .. ')何かの理由で不十分? –
@Iskar Jarak、これは機能します! (私はこれが答えになると思うので)。 興味深いことに、内部的には、最初のコマンドに 'CMAKE_C_COMPILER'、2番目に' CMAKE_C_COMPILER_ARG1'を使用しています。何が起きているのか分かりません - cmake-guiでこれらを設定しようとしたので、 'CMAKE_C_COMPILER_ARG1'は' CHECK_C_SOURCE_COMPILES'で無視されていました。 – ideasman42
うれしいです。環境変数を設定すると、おそらく他のものも設定されます。私は100%ではありませんが、CHECK_C_SOURCE_COMPILESが使用しているのは...なぜなら、CMakeの個々の変数を混乱させるのはそのような痛みです。 –