2012-12-13 9 views
11

मैं जी ++ के साथ अपना सीपीपी कोड बनाने के लिए सेमीकेक को मजबूर करने की कोशिश कर रहा हूं, क्योंकि डिफ़ॉल्ट रूप से यह क्लैंग का उपयोग करता है। इसलिए मैं का उपयोग करें: जीसीसी और जी ++ (सफलता के साथ) के लिए cmake -D CMAKE_CXX_COMPILER=g++ ../src/CMakeLists.txt जिसके बाद cmake चेक, लेकिन फिर भी make VERBOSE=1 पैदावारसीएमके का सम्मान नहीं करता -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/जी ++ मैं सहमत यह अभी भी उपयोग करता है बजना। कोई विचार क्या समस्या है? मुझे पता है कि मेरे पास g ++ है और यह/usr/bin/में है। मैं मैक ओएस एक्स 10.8.2

+3

शायद एक मूर्ख सवाल लेकिन कई लोग भूल जाते हैं। क्या आपने उस कॉन्फ़िगरेशन विकल्प के साथ cmake चलाने से पहले बिल्ड निर्देशिका की संपूर्ण सामग्री को हटा दिया था? एक बार उस चर को किसी दिए गए निर्माण निर्देशिका (स्वचालित रूप से या मैन्युअल रूप से) के लिए सेट किया जाता है, इसे भविष्य के रनों पर नजरअंदाज कर दिया जाता है ताकि विकल्प को पहले रन पर और केवल पहले रन पर उपयोग किया जाना चाहिए। – John5342

+0

@ जॉन 5342 - यह चाल है! मैं एक सेमेक नौसिखिया हूँ, इसलिए बिल्ड डीआईआर को साफ करने की आवश्यकता के बारे में नहीं पता था। धन्यवाद। – Puchatek

+0

चूंकि मैं मौका से सही था, मैंने इसे स्रोत सहित उचित उत्तर के रूप में भी जोड़ा है। जब मैंने पहली बार सेमेक सीखा तो मुझे मैनुअल और उद्धृत पृष्ठ बहुत उपयोगी पाया गया। – John5342

उत्तर

12

CMAKE_CXX_COMPILER केवल पहली बार cmake किसी दिए गए निर्माण निर्देशिका में चलाया जाता है सेट किया जा सकता। बाद के रनों पर इसे नजरअंदाज कर दिया जाता है। CMAKE_CXX_COMPILER को बदलने के लिए आपको पहले बिल्ड निर्देशिका की सामग्री को हटाने की आवश्यकता है और फिर उस विकल्प के साथ फिर से cmake चलाएं।

स्रोत: http://www.cmake.org/Wiki/CMake_Useful_Variables

मेरा मानना ​​है कि केवल पहली बार चलाने पर कि चर का उपयोग कर के लिए तर्क है, क्योंकि यह बाद में बदल रहा है संभवतः सब कुछ रद्द करना होगा पहले से ही विन्यास चेकों सहित इसलिए cmake वैसे भी सिरे से शुरू करने के लिए होगा का निर्माण किया।

+0

धन्यवाद - यह मुझे कुछ बार मिला है। यह अच्छा होगा अगर सेमेक के पास 'साफ' विकल्प था। – ccook

1

चल रहा हूँ मैं इसे इस तरह के बजाय कार्य करें:

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

या तो काम नहीं करता है ... $ CXX yeilds/usr/bin/g ++ गूंजें, लेकिन संकलन करते समय भी मैं/usr/bin/C++ का उपयोग करता हूं: | – Puchatek

संबंधित मुद्दे