Unix में, क्या मैं उस डायरेक्टरी को पहले बिना उस डायरेक्टरी में 'मेक' चला सकता हूं?


210

यूनिक्स में, क्या मैं पहले उस निर्देशिका में आईएनजी के makeबिना एक निर्देशिका में चला सकता हूं cd?

जवाबों:


338

make -C /path/to/dir


8
गमला - जो मानक बनाने में नहीं है; यह एक GNU एक्सटेंशन होना चाहिए। चूंकि आप लिनक्स और यूनिक्स कहते हैं, यह स्पष्ट नहीं है कि आप क्या चाहते हैं, लेकिन -सी विकल्प सोलारिस 10 (/ usr / ccs / bin / make), AIX (usr / bin / make), या पर काम नहीं करेगा। एचपी-यूएक्स 11.23 (/ यूएसआर / बिन / मेक)। फिर भी, 4 में से 1 बहुत बुरा नहीं है।
जोनाथन लेफ़लर

6
यह बीएसडी बनाने में भी काम करता है, इसलिए इसका सिर्फ जीएनयू विस्तार नहीं है।
क्रिस डोड

4
सुनिश्चित करें कि 'C' ऊपरी मामले में है।
m.r226

101

जैसा कि अन्य उत्तरों में उल्लेख किया गया है, मेक (1) के पास इसके लिए एक -C विकल्प है; कई आदेशों के समान विकल्प होते हैं (जैसे टार)। यह नोट करना उपयोगी है कि अन्य आदेशों के लिए जिनमें ऐसे विकल्पों की कमी है, निम्नलिखित का उपयोग किया जा सकता है:

(cd /dir/path && command-to-run)

यह एक उप-शेल में कमांड चलाता है, जिसमें पहले इसकी कार्यशील निर्देशिका बदल गई है (अकेले पैरेंट शेल की कार्यशील निर्देशिका को छोड़ते हुए)। यहां && उन ; त्रुटि मामलों को पकड़ने के बजाय उपयोग किया जाता है जहां निर्देशिका को बदला नहीं जा सकता है।


22

यदि आप किसी निर्देशिका में सीडी नहीं चाहते हैं, क्योंकि आपको बाद के कार्य के लिए वर्तमान निर्देशिका में रहने की आवश्यकता है, तो आप पुश और पॉप का उपयोग कर सकते हैं:

pushd ProjectDir ; make ; popd

यह प्रोजेक्टडिअर में चला जाता है, रन बनाता है, और जहाँ आप थे, वापस चला जाता है।


11

इसके अलावा आप उपयोग कर सकते हैं:

make --directory /path/to/dir

-3

makefile:

all:
    gcc -Wall -Wpedantic -std=gnu99 -g src/test.c -o build/test

run:
    ./build/test

या

run:
    ./../build/test

आदि।


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