में "स्विच" करने का अच्छा तरीका मैं काम पर एक अद्यतन निर्माण प्रणाली के साथ प्रयोग कर रहा हूं; वर्तमान में, मैं लक्ष्य मंच के आधार पर कंपाइलर & झंडे सेट करने का एक अच्छा तरीका खोजने का प्रयास कर रहा हूं।मेकफ़ाइल
मैं करना चाहते हैं क्या की तरह
switch $(PLATFORM)_$(BUILD_TYPE)
case "Linux_x86_release"
CFLAGS = -O3
case "Linux_x86_debug"
CFLAGS = -O0 -g
case "ARM_release"
CC = armcc
AR = armlink
CFLAGS = -O2 -fx
...
कुछ जो जीएनयू द्वारा समर्थित नहीं है सुनिश्चित है। अब, तो मेरा पहला विचार सिर्फ
-include $(PLATFORM)_$(BUILD_TYPE)
जो एक बहुत सभ्य समाधान है क्या करना था, तथापि, यह, नहीं है कि मैं लेखन के लिए आगे देख रहा हूँ उल्लेख करने के लिए यह मुश्किल क्या फ़ाइलों के बीच अलग के एक सिंहावलोकन प्राप्त करने के लिए बनाता है & अच्छी 60-80 फ़ाइलों को बनाए रखने, प्रत्येक में परिवर्तनीय परिभाषाओं का एक सेट होता है।
क्या किसी को इसे पूरा करने के लिए एक बेहतर तरीका पता है? अर्थात। किसी अन्य चर के आधार पर झंडे और अन्य विकल्पों का एक सेट सेट करना?
मेरा उपयोग-मामला वास्तव में है कि मेरे पास मेकफ़ाइल-आधारित सिस्टम है जो घटकों का एक बड़ा सेट बनाता है, जिनमें से कुछ ने स्क्रिप्ट को कॉन्फ़िगर किया है जिन्हें ठीक से संचालित करने की आवश्यकता है। बिल्ड सिस्टम प्रति आउटपुट लक्ष्य को $ (arch)-जैसी स्ट्रिंग के साथ अलग रखता है जिसे config.sub पर पास नहीं किया जा सकता है, इसलिए मुझे एक केस स्टेटमेंट चाहिए जो हमारे $ (arch) को --host के मान में परिवर्तित करता है कॉन्फ़िगर स्क्रिप्ट पर पास किया जाना चाहिए। हमें वास्तव में बिल्ड सिस्टम के शीर्ष पर '$ (PLATFORM) _ $ (BUILD_TYPE)' जैसे कुछ से $ (arch) मिलता है। –