2011-02-03 17 views
5

linux पर make के साथ, हम चीजें कर सकते हैं जैसे:Microsoft nmake का उपयोग करते समय कमांड का आउटपुट कैसे प्राप्त करें?

foo=$(shell /bin/bar) 

जो bar कमांड चलाता है और आउटपुट को foo पर असाइन करता है। बाद में इसे $(foo) संदर्भित करके मेकफ़ाइल में उपयोग किया जा सकता है।

लेकिन अब मेरे पास मेरे हाथों पर एक माइक्रोसॉफ्ट प्रोजेक्ट है जो संकलित और माइक्रोसॉफ्ट nmake.exe से जुड़ा हुआ है। क्या एनएमके के लिए एक समतुल्य चीज है जो मुझे कमांड चलाने और आउटपुट को एक चर के लिए असाइन करने की अनुमति देगी?

उत्तर

2

मुझे लगता है कि उत्तर "नहीं" है। कोई समकक्ष नहीं है।

मैं अनुशंसा करता हूं कि यदि आप संभव हो तो MSBuild में कनवर्ट करें।

+0

मैं इसे कभी नहीं करने के लिए एक रास्ता खोजने किया था। निष्पक्ष होने के लिए, एमएसबिल्ड ने समस्या को हल नहीं किया, हालांकि मैंने अंततः अन्य कारणों से इसे परिवर्तित कर दिया। अंत में, इस समस्या को हल करने के लिए मैंने परियोजना के निर्माण से पहले जरूरी जरूरी कॉल करने के लिए एमएस पावरशेल को थोड़ा सा स्क्रिप्ट करना समाप्त कर दिया। –

2

हालांकि यह एक पुराना सवाल है, पूछे जाने वाले तरीके की एक विधि है; बैच फाइलों में सबकुछ की तरह, यह सिर्फ गड़बड़ है!

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

!IFNDEF MAKE 
MAKE=NMAKE 
!ENDIF 
!IFNDEF SHELLVALUE 
! IF [echo off && FOR /F "usebackq" %i IN (`hostname`) DO SET SHELLVALUE=%i && $(MAKE) /$(MAKEFLAGS) /nologo /f $(MAKEDIR)\Makefile && exit /b ] == 0 
!  MESSAGE Make completed 
! ELSE 
!  ERROR Error in nmake 
! ENDIF 
!ELSE 
# $(SHELLVALUE) now contains the string returned from the command USERNAME 
!MESSAGE Shellvalue is $(SHELLVALUE) 
#  Put the parts of the makefile that depend on SHELLVALUE here 
!ENDIF 
# 
# To be a valid makefile it must have some rules to perform 
all: 
    @echo;$(SHELLVALUE) 

हाँ, मैं अपने भयानक है, लेकिन यह कैसे तकनीक है, जो किसी भी शेल कमांड के साथ किया जा सकता है और न सिर्फ hostname करने के लिए प्रदर्शित करता है।

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