2012-12-13 12 views
11

cmake'yi C++ kodunu g ++ ile oluşturmak için zorlamaya çalışıyorum, varsayılan olarak bunun yerine clang kullanıyor. gcc ve g ++ (başarı ile) için cmake -D CMAKE_CXX_COMPILER=g++ ../src/CMakeLists.txt sonra cmake kontrolleri, ama yine de make VERBOSE=1 verimleri Cmake onur duymuyor -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++ değil/usr/bin çağırır gibi

/I hemfikir gr ++ hala kullanır: Ben kullanmak clang. Sorunun ne olduğu hakkında bir fikrin var mı? Biliyorum g ++'m var ve/usr/bin/içinde. Mac OS X 10.8.2

+3

Muhtemelen aptalca bir soru ama birçok kişi unutuyor. Bu yapılandırma seçeneğiyle cmake'yi çalıştırmadan önce derleme dizininin tüm içeriğini kaldırdınız mı? Bu değişken belirli bir derleme dizini için (otomatik veya manuel) bir kez ayarlandığında, gelecekteki çalışmalarda yok sayılır, böylece ilk çalıştırmada ve sadece ilk işlemde seçeneğin kullanılması gerekir. – John5342

+0

@ John5342 - bu hile yaptı! Ben bir cmake newbie değilim, bu yüzden dir yapıyı temizlemeye gerek olmadığını bilmiyordum. Teşekkür ederim. – Puchatek

+0

Şans eseri doğru olduğumdan, kaynağı da içeren uygun bir cevap olarak ekledim. Cmake'yi ilk öğrendiğimde, kılavuzu ve alıntılanan sayfayı çok yararlı buldum. – John5342

cevap

12

CMAKE_CXX_COMPILER sadece cmake verilen bir yapı dizinde ilk çalıştırıldığında ayarlanabilir. Sonraki çalışmalarda göz ardı edilir. CMAKE_CXX_COMPILER değerini değiştirmek için önce derleme dizininin içeriğini silmeniz ve daha sonra cmake'yi bu seçenekle tekrar çalıştırmanız gerekir.

Kaynak: http://www.cmake.org/Wiki/CMake_Useful_Variables

potansiyel olarak her şeyi geçersiz olur daha sonra değişen zaten cmake zaten sıfırdan başlamak zorunda kalacak, böylece yapılandırma kontrolleri de dahil olmak üzere inşa çünkü sadece ilk çalıştırmada bu değişkenin kullanımı için akıl olduğuna inanıyoruz.

+0

Teşekkürler - bu bana birkaç kez sahip oldu. Cmake 'temiz' bir seçenek olsaydı güzel olurdu. – ccook

1

koşuyorum Ben artık şöyle yaparım:

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

Ya işe yaramıyor ... echo $ CXX yeilds/usr/bin/g ++, ancak derlerken/usr/bin/C++ 'yi hala görüyorum. – Puchatek