2009-04-20 10 views
5

नियम मैं एक (वर्तमान में) छोटे सी परियोजना में इकाई परीक्षण के लिए समर्थन में निर्माण करने की कोशिश में Using Check with the Autotools पृष्ठ पर निर्देशों का पालन कर रहा हूँ कर सकते हैं। हालांकि मैं Check के बजाय Cgreen का उपयोग कर रहा हूं। शैली पैटर्न नियम एक जीएनयू विस्तार बनाने जा रहा है -जीएनयू की पोर्टेबल बराबर% शैली पैटर्न

मैं चरण 9, जो automake `% 'के उपयोग के बारे में एक चेतावनी फेंकना खड़ी कर रहा है कुछ समस्या आ रही।

विशेष कर नियम है:

check_%.$(OBJEXT) : $(srcdir)/%.c 
    $(COMPILE) -DCHECKING -c -o [email protected] $^ 

मैं अगर इस नियम है कि gnu पर निर्भर नहीं करता एक्सटेंशन बनाने के निर्दिष्ट करने का एक बराबर तरीका है सोच रहा हूँ।

उत्तर

7

पोर्टेबल बनाने के नियम केवल विभिन्न प्रत्ययों का उपयोग कर सकते, उपसर्गों ही होना चाहिए।

.c.o: 
     $(COMPILE) -DCHECKING -c -o [email protected] $< 

प्रत्यय आवश्यक रूप से एक बिंदु से शुरू नहीं होता है। (उस मामले में आप क्योंकि यह लगता है कि नहीं कर सकते, Automake बताने के लिए कि आपके प्रत्यय हैं।) तो इस प्रकार आप कुछ हो सकता था उदाहरण के लिए यदि आप का नाम बदलने check_showdns.oshowdns_check.o रहे हैं:

SUFFIXES = _check.o 
check_libapdns_LDADD  = @[email protected] showdns_check.o 
.c_check.o: 
     $(COMPILE) -DCHECKING -c -o [email protected] $< 
+0

महान सुझाव। समस्या को ठीक करता है। मैं _check के बजाय _test उपसर्ग का उपयोग कर समाप्त हो गया। – Wes

-2

मैं नहीं बल्कि अक्षम करने का प्रयास करता हूँ चेतावनी या बस इसे अनदेखा करें। जीएनयू सभी प्रासंगिक यूनिक्स-जैसे प्लेटफार्मों के लिए मौजूद है; मेकफ़ाइल पोर्टेबिलिटी को बनाए रखने में समय बिताने का कोई व्यावहारिक कारण नहीं है। जीएनयू मेक अधिकांश अन्य बोलीभाषाओं के लिए विशेष रूप से बेहतर है।

+0

यह सच है लेकिन मेजबान ओएस बॉक्स में से एक प्रदान करता है, तो यह एक अच्छा उपकरण की स्थापना की आवश्यकता नहीं होगी। – Wes

+0

लेकिन उस समय पर विचार करें जब आपको पोर्टेबल मेकफ़ाइल बनाए रखना है। यदि आप केवल जीएनयू को लक्षित करते हैं, तो आप इसे अपने मेकफ़ाइल लिखने के लिए * अधिक * आसान बना देंगे, और अपने एप्लिकेशन को बेहतर बनाने और बग को ठीक करने के लिए अधिक समय प्राप्त करेंगे। – JesperE

+1

अच्छी कहानी, क्या आप अपने सभी मेकफ़ाइल GNUMakefile का नाम देते हैं जैसे कि आपको जीएनयू को केवल लक्षित करना चाहिए? GNU होने के लिए हर किसी के 'मेक' की आवश्यकता है GNUMakefile का उपयोग करके मानक बनाने के साथ संगतता को तोड़ने की आपकी इच्छा को इंगित करना और मानक नहीं है, अब "पोर्टेबल मेकफ़ाइल बनाए रखने में अपना समय बर्बाद न करें" रवैया – MkV

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