سؤال

لديّ makefile مع الكود التالي. أحاول تعيين متغير في عبارة if. لا خطأ ، ولكن %OPTION% فقط يطبع %OPTION (مع علامة مئوية واحدة فقط) و $(OPTION) لا تطبع أي شيء. الرجاء المساعدة

Makefile

RELEASE_OR_DEBUG=debug  
init:  
    SET OPTION=test  
    @echo test1 = %OPTION%  
        @echo test2 = $(OPTION)  
    if ".$(RELEASE_OR_DEBUG)" == ".debug" SET OPTION="-d"  
    @echo OPTION = %OPTION%  
    @echo OPTION = $(OPTION)  

انتاج |

test1 = %OPTION  
test2 =   
if ".debug" == ".debug" SET OPTION="-d"  
OPTION = %OPTION  
OPTION = $(OPTION)
هل كانت مفيدة؟

المحلول

لا يمكنك تعيين المتغيرات داخل بيانات التبعية (مثل "init" في هذه الحالة). في الواقع ، لا يمكنك استخدام إذا كانت هناك عبارات هناك أيضًا. يمكن تعيين المتغيرات عن طريق ملفات الدُفعات الخارجية قبل الاتصال بـ Makefile (ويمكن أن يتصل ملف الدُفعات بعد ذلك بـ Makefile) أو خارج عبارات التبعية مثل الإصدار refer_or_debug في هذا المثال.
للوصول إلى المتغيرات داخل عبارات التبعية ، استخدم $ (variable_name). كن على دراية أنه إذا لم يتم العثور على الاسم المتغير ، فسيستخدم ببساطة سلسلة فارغة (كما هو الحال في اختبار "echo test2 = $ (الخيار)" حيث لم يتم العثور على خيار المتغير).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top