2013-01-22 18 views
10

चलती CMake फिर से मार डाला जाता है, तो बाद स्रोत निर्देशिका ले जाया जाता है, इस तरह एक त्रुटि दिया जाता है के बाद CMakeCache.txt को हटाने बनाम:संपादन निर्देशिका

CMake Error: The current CMakeCache.txt directory /new-path/CMakeCache.txt is different than the directory /old-path where CMakeCache.txt was created. This may result in binaries being created in the wrong place. If you are not sure, reedit the CMakeCache.txt

इस से निपटने के लिए सबसे अच्छा तरीका क्या है? ऐसा लगता है कि कैश काम को हटाना। मैं इसे हटाने के बजाय CMakeCache.txt संपादित क्यों कर सकता हूं?

+0

http://unix.stackexchange.com/questions/66480/cmake-error-the-current-directory-is- dififferent-than –

उत्तर

15

मुझे लगता है कि आपकी सबसे अच्छी शर्त वास्तव में कैश को हटाने और इसे फिर से बनाने के लिए है। असल में, अगर मैं स्रोत को स्थानांतरित करने की ज़रूरत है, तो मैं आगे बढ़ता हूं और पूरे निर्माण पेड़ को हटा देता हूं, लेकिन यह शायद अधिक है।

CMakeCache.txt फ़ाइल CMake जीयूआई के माध्यम से या हाथ से संपादित किया जा सकता है, तो क्या आप वाकई क्या कर रहे हैं, लेकिन मैं यह आम तौर पर प्रयास खरोंच से cmake से चल फिर से की तुलना के लायक नहीं है पाते हैं। मुझे लगता है कि अगर सीएमके चलाना काफी समय लेता है (उदाहरण के लिए यदि आप ExternalProject_Add का उपयोग करते हैं जिसमें किसी तृतीय-पक्ष संसाधन को डाउनलोड और निर्माण करना शामिल हो सकता है), तो यह CMakeCache.txt को संशोधित करना बेहतर हो सकता है।

This article CMakeCache.txt फ़ाइल के बारे में थोड़ा और विवरण प्रदान करता है और इसे संपादित करता है। विशेष रूप से यह कहता है:

The main reason for editing the cache would be to give CMake the location of a native library such as JPEG, or to stop it from using a native library and use a version of the library in your source tree.

CMake will not alter an existing entry in the cache file itself. If your CMakeLists.txt files change significantly, you will need to remove the relevant entries from the cache file. If you have not already hand-edited the cache file, you could just delete it before re-running CMake.

+1

मैंने इस कैश के साथ अपने कैश को साफ़ करने का प्रयास किया: 'rm -rf ~/.cache/* 'लेकिन त्रुटि अभी भी बनी हुई है। मुझसे कहां गलती हो रही है? –

0

मैं एक सीजीएएल कोड चलाते समय एक ही त्रुटि में भाग गया (जिसे मैंने पहले से ही संकलित किया था)। मैंने जो कुछ किया वह एक नई निर्देशिका बना रहा था और वहां ".cpp" फ़ाइल कॉपी करें और "CGAL_create_CMakelists" चलाएं और फिर cmake कमांड चलाएं। यह इस तरह से काम करता है। मुझे बिल्कुल पता नहीं है लेकिन मुझे लगता है कि त्रुटि तब आती है जब आप पहले से संकलित कोड चलाते हैं और इसकी फाइलें पहले से ही फ़ोल्डर में होती हैं (पिछली संकलन के कारण)।