मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जिसमें निर्माण (10-15) मिनट बनाने के लिए काफी समय लगता है। मैंने संकलन त्रुटि की पुष्टि करने के लिए पुनः संकलित किया है। अब मैं इंस्टॉल निर्देशिका को बदलना चाहता हूं ताकि मेरे पास नए बदलावों के साथ निष्पादन योग्य का नया संस्करण हो। क्या इंस्टॉल पथ को बस संशोधित करने का कोई तरीका है ताकि 'इंस्टॉल करें' पुराने स्थान की बजाय किसी नए स्थान पर इंस्टॉल हो?कॉन्फ़िगर स्क्रिप्ट/cmake को फिर से चलाए बिना इंस्टॉल-पथ को संशोधित करने के लिए
उत्तर
सीएमके जेनरफाइल मेकफ़ाइल के लिए DESTDIR coding convention का समर्थन करता है। इस प्रकार आप लागू कर पर DESTDIR
चर सेट करके डिफ़ॉल्ट स्थापना स्थान ओवरराइड कर सकते हैं:
$ make install DESTDIR=/opt/local
को फिर से चलाने के CMake कोई जरूरत नहीं है।
-DCMAKE_INSTALL_PREFIX=<somewhere different to last time>
के साथ चलने वाले सीएमके को आपके प्रोजेक्ट को पुनः संयोजित करने की आवश्यकता नहीं होनी चाहिए। यदि आप सीएमके को अन्य कमांड लाइन पैरामीटर पास करते हैं जो उदा। कंपाइलर झंडे को बदलें, प्रभावित लक्ष्यों के पुनर्निर्माण को मजबूर करेगा, लेकिन बस इंस्टॉल उपसर्ग को बदलना नहीं होगा।
क्या कोई तरीका है cmake rerunning बिना स्थापित उपसर्ग बदलें? ऐसा लगता है कि सीपीएक्स ऐसा करने में सक्षम है, लेकिन मुझे कुछ चर बनाने के लिए सीधे इसे करने का कोई तरीका नहीं दिख रहा है। अगर मैं अपने पैकेजर के साथ एक पैकेज बनाना चाहता हूं, तो मैं चीजों को/usr/local के बजाय/usr के अंतर्गत प्राप्त करना चाहता हूं, लेकिन मैं प्रोग्रामर से सही CMAKE_INSTALL_PREFIX के साथ cmake चलाने के लिए कहने के बिना काम करना चाहता हूं .. –
ठीक है, आप अपने सीएमकेलिस्ट में 'सेट' का उपयोग कर सकते हैं।'CMAKE_INSTALL_PREFIX' के मान को हार्ड-कोड करने के लिए txt करें, लेकिन मुझे लगता है कि यह काफी असामान्य है और उन लोगों को पकड़ सकता है जो पहले से ही सीएमके के लिए उपयोग किए जाते हैं। हो सकता है कि एक बेहतर विकल्प आपके CMakeLists.txt में 'संदेश' मुद्रित करना होगा जो 'CMAKE_INSTALL_PREFIX' का वर्तमान मान प्रदर्शित करता है और यह भी मान देता है कि मूल्य को कैसे बदला जाए। कुछ संदेश की तरह कुछ ("इंस्टॉल पथ वर्तमान में $ {CMAKE_INSTALL_PREFIX} है") '' संदेश ("इस रन को बदलने के लिए: cmake। -DCMAKE_INSTALL_PREFIX = \" <नया इंस्टॉल पथ> \ "" ' – Fraser
बस अगर कोई सीएमके का उपयोग नहीं कर रहा है तो मेकफ़ाइल में ऐसा करने का एक तरीका है। अगर आपके पास अपनी बिल्ड निर्देशिका में मेकफ़ाइल.कॉन्फिग फ़ाइल उत्पन्न हुई है, तो prefix
खोजें। यह prefix
path
स्थापित है जहां द्विआधारी/शीर्षलेख इत्यादि स्थापित किए जाएंगे। इसे बदलने से बाइनरी/शीर्षलेख संशोधित path
पर स्थापित हो जाएंगे।
मुझे नहीं पता कि यह आम तौर पर सच है या नहीं, लेकिन मैं the accepted answersakra
द्वारा एक आवेदन का उदाहरण दे सकता हूं, ठीक से काम नहीं करता है। आप जब ITK स्थापित करने DESTDIR
संशोधित करके स्थापित निर्देशिका संशोधित करते हैं, यह सिर्फ अपने पहले से ही स्थापित गठन पथ के लिए DESTDIR
संलग्न कर देगा:
make install DESTDIR=/opt/local
[...]
-- Installing: /opt/local/usr/local/lib/cmake/ITK-4.4/WrapITK/Configuration/Typedefs/itkRenyiEntropy[...]
दूसरी ओर this answerFraser
के बाद पुन: संकलन के बिना उचित स्थापित पथ होंगे:
cmake -DCMAKE_INSTALL_PREFIX=/opt/local /path/to/ITK_source
make install
[...]
-- Installing: /opt/local/lib/cmake/ITK-4.4/WrapITK/Configuration/Typedefs/itkRenyiEntropy[...]
DESTDIR और उपसर्ग के विहित परिभाषा है: फ़ाइलों $ DESTDIR $ उपसर्ग करने के लिए स्थापित है, लेकिन तैयार कर रहे हैं उनके अंतिम स्थापित स्थान के रूप में अगर सिर्फ उपसर्ग डॉलर था।
तो DESTDIR केवल उन लोगों के लिए है जो बाइनरी के पैकेज या टैरबॉल बनाते हैं; CMAKE_INSTALL_PREFIX किसी भी व्यक्ति के लिए है जो निर्दिष्ट करना चाहता है कि निर्मित बाइनरी को अंत में कहाँ रहना चाहिए।
- 1. लिस्प फ़ंक्शन को फिर से लिखने के बिना संशोधित करें?
- 2. कॉलबैक को फिर से ट्रिगर किए बिना उसी ऑब्जेक्ट को संशोधित करने के लिए after_save कॉलबैक का उपयोग करना (रिकर्सन)
- 3. आरईपीएल में पिछली लाइन को संशोधित करने के लिए - स्केल को टाइपिंग त्रुटियों को संशोधित करने के लिए टाइपिंग त्रुटियों को संशोधित करने के लिए टाइप करने के लिए टाइपिंग त्रुटियों को संशोधित करने के लिए टाइप करें
- 4. लिनक्स निष्पादन योग्य को अलग करने, संशोधित करने और फिर फिर से इकट्ठा करने के लिए कैसे?
- 5. पृष्ठ को फिर से लोड किए बिना क्वेरी स्ट्रिंग को संशोधित करना
- 6. संशोधित कर्नेल मॉड्यूल को फिर से लोड करने के लिए कैसे करें
- 7. Emacs को स्वचालित रूप से TAGS फ़ाइल को फिर से लोड करने के लिए कैसे करें?
- 8. UIViewController को फिर से लोड करने के लिए कैसे करें
- 9. थ्रेड को रोकने/फिर से शुरू करने के लिए
- 10. कैसे ठीक से Xvfb के साथ काम करने सेलेनियम Maven प्लगइन कॉन्फ़िगर करने के लिए चलाने के लिए बिना सिर
- 11. डेटाबेस को संशोधित करने से रोकें फ्रेमवर्क
- 12. ऐप्पलस्क्रिप्ट सिंटैक्स को साफ़ करने के लिए एक्सकोड 4.1 को स्वचालित करने के लिए, फिर
- 13. क्या मेरे प्रारंभकर्ताओं को फिर से चलाने के लिए रेल कंसोल को कॉन्फ़िगर करने का कोई तरीका है?
- 14. पाइथन पुस्तकालय ट्रांसकोडिंग के बिना एमपी 3 ऑडियो को संशोधित करने के लिए
- 15. NSTextStorage को संशोधित करने से प्रविष्टि बिंदु
- 16. ऑब्जेक्ट को संशोधित करने या संशोधित प्रतिलिपि
- 17. बंद होने और फिर से खोलने के बिना विंडोज़ फॉर्म को फिर से लोड करना
- 18. "wscript.shell" काम करने के लिए IE को कॉन्फ़िगर कैसे करें
- 19. डिफ़ॉल्ट रूप से सभी क्षेत्रों को ध्वस्त करने के लिए विजुअल स्टूडियो को कॉन्फ़िगर कैसे करें?
- 20. कोर डेटा मॉडल को संशोधित करने के बाद कक्षा परिभाषा को फिर से बनाने का बेहतर तरीका?
- 21. लूप के बिना विशिष्ट स्थानों पर 2 डी numpy सरणी को संशोधित करने के लिए कैसे?
- 22. आईआईएस 7.5 को कॉन्फ़िगर करने के लिए सर्वर पक्ष को सक्षम करने के लिए '.html' एक्सटेंशन
- 23. साइंटे को स्वचालित रूप से फ़ाइल को फिर से लोड करने के लिए कैसे मजबूर करें?
- 24. कॉन्फ़िगरेशन प्रबंधक को सभी अनुभागों को फिर से लोड करने के लिए मजबूर करना
- 25. फिर से मर्ज विवादों को हल किए बिना गिट रीडवर्ड
- 26. अंतिम एचटीएमएल आउटपुट को संशोधित करने के लिए वर्डप्रेस फ़िल्टर
- 27. विधि तर्कों को संशोधित करने के लिए तेज़ तरीका
- 28. रीफ्रेश किए बिना यूआरएल को फिर से लिखना, जैसे GitHub.com
- 29. सीवीएस डिफ केवल संशोधित फ़ाइलों को आउटपुट करने के लिए?
- 30. बगज़िला के साथ ग्रहण MyLyn: क्या BugZilla स्थापना को संशोधित/कॉन्फ़िगर करने की आवश्यकता होगी?
संभावित डुप्लिकेट [इंस्टॉल करें - लेकिन डिफ़ॉल्ट निर्देशिकाओं के लिए नहीं?] (Http://stackoverflow.com/questions/3239343/make-install-but-not-to-default- निर्देशिकाएं) –