कैसे कई परिभाषित करने के लिए Makefile में पथ शामिल हैं


96

सी ++ के लिए नया; शामिल हैं, पुस्तकालयों और संकलन प्रक्रिया की बुनियादी समझ। अभी तक कुछ सरल मेकफाइल्स किया था।

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

यह एक तरीका है जो मैंने कोशिश की (काम नहीं कर रहा)। सिर्फ मेकफिल दिखाने के लिए

LIB=-L/usr/informix/lib/c++
INC=-I/usr/informix/incl/c++ /opt/informix/incl/public

default:    main

main:   test.cpp
        gcc -Wall $(LIB) $(INC) -c test.cpp
        #gcc -Wall $(LIB) $(INC) -I/opt/informix/incl/public -c test.cpp

clean:
        rm -r test.o make.out

जवाबों:


112

आपको प्रत्येक निर्देशिका को इसके साथ प्रस्तुत करना होगा -I:

INC=-I/usr/informix/incl/c++ -I/opt/informix/incl/public

1
यह अभी भी मेरे लिए काम नहीं करता है, हालांकि gcc को मैन्युअल रूप से चलाना है।
NoBugs

92

आपको -Iप्रत्येक निर्देशिका के साथ उपयोग करने की आवश्यकता है । लेकिन अगर आप (GNU) मेक का उपयोग करते हैं, तो आप अभी भी व्हाट्सएप के साथ निर्देशिकाओं का परिसीमन कर सकते हैं foreach:

INC=$(DIR1) $(DIR2) ...
INC_PARAMS=$(foreach d, $(INC), -I$d)

9
+ यह वही है जिसकी तलाश में मैं यहाँ आया था। $(foreach,,)
जोनाथन रेनहार्ट

16
या कम: प्रतिस्थापन केINC_PARAMS=$(INC:%=-I%) साथ । अधिक पठनीय है, लेकिन प्रतिस्थापन इतने सामान्य रूप से उपयोग किए जाते हैं कि यह परिचित करना अच्छा है कि वे वैसे भी कैसे काम करते हैं। $(foreach,,)
रात्रि 8:14

5
या INC_PARAMS = $(addprefix -I,$(INC))
मा मिंग

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