2012-12-13 9 views
11

私は強制的にg ++で自分のcppコードを作成しようとしています。デフォルトではclangを代わりに使用しています。 gccとG ++(成功して)のためにcmake -D CMAKE_CXX_COMPILER=g++ ../src/CMakeLists.txt後cmakeのチェックを、それでもmake VERBOSE=1利回り Cmakeは-D CMAKE_CXX_COMPILER = g ++を受け入れません

/usr/bin/c++  -o CMakeFiles/trial_cpp.dir/trial.cpp.o -c "/Users/Kuba/Code/Sketchpad/Trial  project/src/trial.cpp" 
Linking CXX executable trial_cpp 
/opt/etlocal/bin/cmake -E cmake_link_script CMakeFiles/trial_cpp.dir/link.txt --verbose=1 
/usr/bin/c++ -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/trial_cpp.dir/trial.cpp.o -o trial_cpp 

それが、/ usr/binに/ C++ではないの/ usr/binに呼び出しなど

/私は同意グラム++は、それはまだ使用しています。だから私は使いclang。何が問題なの?私はg ++を持っていて、/ usr/bin /に入っていることを知っています。私は私ではなく、このようにそれを行うのMac OS X 10.8.2

+3

おそらく愚かな質問ですが、多くの人が忘れてしまいます。 cmakeをその設定オプションで実行する前に、buildディレクトリの内容全体を削除しましたか?その変数が与えられたビルドディレクトリに対して(自動または手動で)一度設定されると、最初の実行時と最初の実行時のみにオプションを使用するように、将来の実行時に無視されます。 – John5342

+0

@ John5342 - それはトリックでした!私はcmakeの初心者ですので、ビルドディレクトリをきれいにする必要性について知りませんでした。ありがとうございました。 – Puchatek

+0

私は偶然正しかったので、ソースも含めて適切な答えとして追加しました。私が最初にcmakeを学んだとき、私はマニュアルと引用されたページが非常に有用であることを発見しました。 – John5342

答えて

12

CMAKE_CXX_COMPILERはcmakeのは、与えられたビルドディレクトリ内で実行される最初の時間を設定することができます。それ以降の実行では無視されます。 CMAKE_CXX_COMPILERを変更するには、まずビルドディレクトリの内容を削除してから、そのオプションでcmakeを再実行する必要があります。

出典:http://www.cmake.org/Wiki/CMake_Useful_Variables

私はcmakeのは、とにかくゼロからスタートしなければならないので、後でそれを変更すると、潜在的に構成チェックを含め、すでに構築され、すべてを無効になるため、最初の実行でその変数を使用するための推論があると信じています。

+0

ありがとう - これは私に数回持っている。 cmakeが 'きれいな'オプションを持っていればいいでしょう。 – ccook

1

を実行している :

CXX=/usr/bin/g++ cmake ../src/CMakeLists.txt 
+0

echo $ CXX yeilds/usr/bin/g ++でもコンパイル時に/ usr/bin/C++が表示されます。 – Puchatek

関連する問題