2016-01-28 4 views
5

से बैश कमांड निष्पादित करना मुझे सीएमके को समझने में परेशानी हो रही है। मुझे क्या करना चाहते हैं निर्माण प्रक्रिया के दौरान निम्नलिखित बैश आदेश पर अमल है:एक सीएमके फ़ाइल

date +"%F %T" > timestamp

यह आज की तारीख को हासिल करेगा और यह एक फाइल करने के लिए लिखता है। हालांकि, मैं सीएमके आदेशों का उपयोग करके इस सरल कार्रवाई को पुन: उत्पन्न नहीं कर सकता।

यहाँ कुछ चीजें है कि मैं कोशिश की है इस प्रकार हैं:

execute_process(COMMAND "date +'%F %T' > timestamp")

add_custom_command(OUTPUT timestamp COMMAND date +"%F %T")

file(WRITE timestamp date +"%F %T")

न तो काम करने के लिए लग रहे हैं। मुझे आश्चर्य है कि क्या उन्हें भी निष्पादित किया जा रहा है।

मुझे सीएमके और उसके वाक्यविन्यास के बारे में बहुत सीमित ज्ञान है, इसलिए मैं शायद चीजों को बहुत गलत कर रहा हूं। मुझे उम्मीद है कि कोई मुझे सही दिशा में इंगित कर सकता है। धन्यवाद!

+1

आप उपयोग नहीं कर सकते '>' वहाँ में ... http://stackoverflow.com/a/31523634/2836621 –

+0

संभव की डुप्लीकेट [कैसे करें वास्तविक निर्माण/लिंक के बाद टाइमस्टैम्प फ़ाइल बनाने के लिए cmake प्राप्त करें? (निष्पादन योग्य नहीं बदला गया है तो कुछ भी नहीं करें)] (http://stackoverflow.com/questions/13419255/how-to-get-cmake-to-create-timestamp-file-after-an-actual-build-link- do-nothin) – Tsyvarev

उत्तर

5

मुझे लगता है कि मेरा मुख्य मुद्दा मेरे आदेश तर्कों के आसपास उद्धरणों की कमी थी। इसके अलावा, @Mark Setchell करने के लिए धन्यवाद मुझे लगता है मैं OUTPUT

के एवज में OUTPUT_VARIABLE का उपयोग करना चाहिए किसी भी हाल में महसूस किया, यहाँ जवाब मैं पर पहुंचे है:

execute_process (
    COMMAND bash -c "date +'%F %T'" 
    OUTPUT_VARIABLE outVar 
) 

इस में बैश आदेश के उत्पादन में संग्रहीत करता है चर outVar

file(WRITE "datestamp" "${outVar}") 

और यह "डेटस्टैम्प" नामक एक फाइल करने के लिए outVar की सामग्री लिखता है।

+1

अच्छी तरह से इसे करने और अपने परिणामों को साझा करने के लिए किया गया। आप अपना उत्तर भी स्वीकार कर सकते हैं :-) –

0

नोट उपयोग करना बैश -c भी चर का कारण होगा जिनमें से समाप्त करने के लिए एक नई लाइन तैयार-खत्म हो जाएगा आप इसे कैसे उपयोग कर रहे हैं

build.make के आधार पर शिकायत करने के लिए करते हैं: *** लापता विभाजक। रूक जा।

इस का समाधान करना चाहिए ऊपर

execute_process(COMMAND which grpc_cpp_plugin OUTPUT_VARIABLE GRPC_CPP_PLUGIN) 
string(STRIP ${GRPC_CPP_PLUGIN} GRPC_CPP_PLUGIN) 
message(STATUS "MY_VAR=${GRPC_CPP_PLUGIN}")