"कई लक्ष्य पैटर्न" Makefile त्रुटि


82

मेरा मेकफाइल त्रुटि के साथ विफल हो जाता है:

Makefile:34: *** multiple target patterns.  Stop.

इसका वास्तव में क्या मतलब है, मैं इसे कैसे ठीक कर सकता हूं?

( GNU मेनुअल मैनुअल , कैप्टन ओब्यूस द्वारा लिखित, मदद नहीं कर रहा है)


मिल गया। मैं नियम के रूप में था:

$(FOO): bar

जहां FOOशेल कमांड से सेट किया गया था जो इसे त्रुटि संदेश के साथ प्रदूषित करता था जिसमें एक बृहदान्त्र शामिल था।



2
एक स्विफ्ट Google, समूहों को

ये उत्तर केवल "आपने कई लक्ष्य पैटर्न प्राप्त किए हैं" के पैराफ्रीज़ हैं। खैर, मुझे लगता है कि मैं नहीं। मैं इसकी जांच कैसे कर सकता हूं? इसे क्या ट्रिगर कर सकते हैं? इस समस्या को रोकने के लिए किन सावधानियों की आवश्यकता है?
कोर्नेल

2
सब कुछ एक मिनट काम कर रहा था और फिर मेरी स्क्रिप्ट ने एक (अर्ध) बृहदान्त्र छींक दिया ... हेह। इससे पहले कि मुझे आपका और @ mcr का उत्तर मिल जाए, कम से कम 3 घंटे तक समस्या का पता लगाने की कोशिश करने में पसीना आ गया। तुमने तो मुझे एक बाल्टी पसीने से बचा लिया !!
गुरु

इस समस्या का असली कारण GNU है गोबर का एक भयानक टुकड़ा होना जो दशकों पहले मर जाना चाहिए था।
विरोध

जवाबों:


62

मैं यह Makefile पर था

MAPS+=reverse/db.901:550:2001.ip6.arpa 
lastserial:  ${MAPS}
    ./updateser ${MAPS}

यह :फ़ाइल नाम के कारण है। मैंने इसके साथ हल किया

                      -------- नोटिस
                     / /
                    वी.वी.
MAPS + = उल्टा / db.901 \: 550 \: 2001.ip6.arpa
अंतिम: $ {MAPS}
    ./updateser $ {MAPS}

1
मुझे भी यही समस्या है, लेकिन मैं आपके जवाब को नहीं समझता, क्या आप मेरे लिए इसे और विस्तृत करेंगे,
पीर फहीम शाह

4
@PirFahimShah यह उत्तर बता रहा है कि फ़ाइल नाम में कॉलोन (db.901: 550: 2001.ip6.arpa) को बच जाने की जरूरत है। mcr उनके सामने बैकस्लैश लगाकर कॉलोनों से बच रहा है। इस तरह, कॉलोन को एक विशेष प्रतीक के रूप में व्याख्या नहीं करते हैं।
लोदुविज्क

1
धन्यवाद, यह मेरे लिए काम किया। मेरे पास C:/Qt/5.8/mingw53_32/bin/rcc.exeमेकफाइल नियमों में से एक में बृहदान्त्र के साथ कुछ पुराने खिड़कियां पथ थे ( )। उन ऑटोजनरेटेड makefiles यदि आप Linux मशीन पर निर्माण कर रहे हैं निकालें
वादिम Kotov

विंडोज़ को wsl (ubuntu) में बदल दिया गया और उसे यह त्रुटि मिली, make cleanजिसके बाद makeइसे हल किया गया । त्रुटिपूर्ण रेखा थी_build/nrf52840_xxaa/app_mpu.c.o: ../../../app_mpu.c \
टाइथ डे

22

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


GNU मेक इन केस में "नो रूल फॉर टारगेट" की भी रिपोर्ट कर सकता है।
davenpcj

4

मैं बस जोड़ना चाहता हूं, अगर आपको यह त्रुटि मिलती है क्योंकि आप साइगविन मेक और ऑटो-जेनरेट की गई फ़ाइलों का उपयोग कर रहे हैं, तो आप इसे निम्न सेड के साथ ठीक कर सकते हैं,

sed -e 's@\\\([^ ]\)@/\1@g' -e 's@[cC]:@/cygdrive/c@' -i filename.d

आपको पहले प्रतिस्थापन में भागने की सूची में केवल स्थान से अधिक वर्ण जोड़ने की आवश्यकता हो सकती है लेकिन आपको विचार मिलता है। यहाँ अवधारणा यह है कि / cygdrive / c, c के लिए एक उपनाम है: जो कि cygwin के मेक को पहचान देगा।

और साथ ही अंदर फेंक सकते हैं

-e 's@^ \+@\t@'

बस अगर आपने दुर्घटना के साथ रिक्त स्थान शुरू किया था (हालांकि मुझे लगता है / यह आमतौर पर "लापता विभाजक" त्रुटि होगी)।


3

मैं उसी त्रुटि के साथ मिला। संघर्ष करने के बाद, मैंने पाया कि यह फ़ोल्डर नाम में "स्पेस" के कारण था।

उदाहरण के लिए :

पहले मेरे फ़ोल्डर का नाम था: "क्यूटी प्रोजेक्ट्स"

बाद में मैंने इसे बदल दिया: "QtProjects"

और मेरी समस्या हल हो गई।

यह बहुत आसान है लेकिन कभी-कभी एक प्रमुख मुद्दा है।


0

मुझे यह समस्या थी (लक्ष्य नाम में कॉलन) क्योंकि मैं -nअपने GREP_OPTIONSपर्यावरण चर में था। जाहिर है, यह गलत तरीके configureसे उत्पन्न करने के लिए होता Makefileहै।


0

मेरी आईडीई ने मेरे मेकफाइल में रिक्त स्थान और टैब का मिश्रण छोड़ दिया।

केवल मेरे टैब का उपयोग करने के लिए मेरा मेकफाइल सेट करना मेरे लिए इस त्रुटि को ठीक करता है।


0

मुझे यह त्रुटि भी मिली (विंडोज पर ग्रहण आधारित STM32CubeIDE के भीतर)।

"कई लक्ष्य पैटर्न" त्रुटि पर डबल-क्लिक करने के बाद इसने एक .ldफ़ाइल को एक रास्ता दिखाया । यह एक और "अवैध चरित्र" समस्या बनती है। अपमानजनक चरित्र था (इसके लिए प्रतीक्षा करें): =

सप्ताह का अनुमान: अपने रास्तों में केवल [a..z] का उपयोग करें, क्योंकि अन्य अवैध वर्ण </ vomit> होने के लिए बाध्य हैं।

जीएनयू मेकअप मैनुअल स्पष्ट रूप से इस दस्तावेज़ नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.