2010-04-19 17 views
5

का उपयोग कर फ़ाइल बनाने के लिए कैसे करें I मेकफ़ाइल से .c फ़ाइल बनाना चाहते हैं। उस सी फ़ाइल की सामग्री निम्नानुसार है:मेकफ़ाइल

char *variable1 = $(VAR1_FROM_MAKEFILE); 
char *variable2 = $(VAR2_FROM_MAKEFILE); 

क्या यह संभव है?

धन्यवाद अग्रिम में

+0

देखें इस [सवाल] (http://stackoverflow.com/questions/1327998/calling-sed-for-a-source-in-makefile-am) आप कैसे पर एक मेकफ़ाइल में sed का उपयोग कर सकते हैं। – kgiannakakis

उत्तर

7

हाँ, आप खोल पुनर्निर्देशन स्रोत फ़ाइल में चर लिखने के लिए उपयोग कर सकते हैं:

VAR1=foobar 
all: 
    @echo "char *variable1 = \"$(VAR1)\"" > generated.c 

(@ चिह्न यहाँ नहीं कर द्वारा प्रदर्शित गूंज आदेश के लिए है)।


संपादित करें: मैं क्या आपके इरादे यहाँ है पता नहीं है, लेकिन यह मैक्रो के रूप में संकलक करने के लिए Makefile चर पारित करने के लिए आसान हो सकता है:

VAR="toco.conf" 
CFLAGS = -DVAR='$(VAR)' 
all: 
    gcc $(CFLAGS) prog.c 

prog.c से किया जा रहा है:

#include <stdio.h> 

int main(int ac, char **av) 
{ 
    printf("%s\n", VAR); 
    exit(0); 
} 
+0

हाय, मैं वर्तमान में कंपाइलर के लिए एक मार्को के रूप में चर पारित कर रहा हूँ। लेकिन यह मामला विफल रहता है जब VAR का मान मेकफ़ाइल को संशोधित किए बिना बदलता है। उदाहरण के लिए VAR: = $ (खोल समय +% एच% एम% एस) मैं यह करना चाहता हूं कि यह कर्नेल ऑब्जेक्ट के लिए मेकफ़ाइल है। AFAIK कर्नेल मॉड्यूल के मेकफ़ाइल में कोई "सब:" नियम नहीं है। अन्यथा आपका पहला समाधान बहुत अच्छा है! मुझे मेकफ़ाइल के बारे में बहुत कुछ पता है। – PrashantB