2013-10-24 8 views
19

वहाँ make में एक स्ट्रिंग (मेरे मामले में एक पथ नाम) से एक उपसर्ग दूर करने के लिए कोई तरीका है?निकालें उपसर्ग

उदाहरण के लिए, मान लीजिए कि मैं स्ट्रिंग था:

FILES = a/b/c.d a/b/e.f 

मैं a/ दूर करने के लिए, और b/c.d b/e.f

साथ छोड़ा जा रहा से dir, notdir और basename के विभिन्न संयोजनों का उपयोग कर की कोशिश की है चाहता हूँ GNU make manual, लेकिन कोई भी अच्छा समाधान प्रदान नहीं करता है।

$(dir $(FILE))  # a/b a/b 
$(notdir $(FILE)) # c.d e.f 
$(basename $(FILE)) # a/b/c a/b/e 

एक ही रास्ता मैं अब तक यह करने के लिए मिल गया है है:

$(join $(basename $(dir $(FILE))), $(notdir $(FILE))) 

कौन वास्तव में बदसूरत और घना है। मुझे वास्तव में क्या चाहिए $(removeprefix ...) फ़ंक्शन। मान लीजिए कि मुझे उपसर्ग (a/) को हटाने के लिए पता है, क्या यह किसी प्रकार की स्ट्रिंग मैनिपुलेशन के साथ किया जा सकता है?

उत्तर

39

आप

$(FILE:a/%=%) 

साथ एक प्रमुख a/ बंद पट्टी कर सकते हैं और अधिक विकल्प & जानकारी के लिए text substitution function reference देखें।

+0

धन्यवाद। वह चाल थी जिसे मैं याद कर रहा था। –

12

कहना चूंकि आप जीएनयू बनाने, क्यों नहीं बस:

$(FILE:a/%=%) 

?

+0

लेम ड्राइव से शीघ्र downvote :( – MadScientist

+2

अनुमान लगाने था कि वहाँ एक समान जवाब ऊपर है, क्योंकि ... लेकिन जो जाहिरा तौर पर ठीक उसी मिनट में पोस्ट किया गया था अशुभ: / –

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