কনফিগার কেন ভেরিয়েবলকে আর্গুমেন্ট হিসাবে গ্রহণ করে?


10

কি VAR=value ./configureহিসাবে একই ./configure VAR=value?

প্রথম ক্ষেত্রে, শেলটি পরিবেশের পরিবর্তনশীল সেট করে এবং দ্বিতীয়টিতে কনফিগার স্ক্রিপ্টটি স্ট্রিংটিকে 'VAR=value'আর্গুমেন্ট হিসাবে গ্রহণ করে এবং সম্ভবত ভেরিয়েবলটি সেট করে। আমি ভাবছি যদি কনফিগারটি ভেরিয়েবলের সাথে অন্য কিছু করে (সম্ভবত কিছু মান উপেক্ষা করুন বা ফিল্টার করুন) এবং কেন এটি ভেরিয়েবলকে প্রথম স্থানে যুক্তি হিসাবে গ্রহণ করে takes

উত্তর:


12

এক্ষেত্রে

VAR=value ./configure

আচরণটি আপনার বর্তমান শেলের উপর নির্ভর করে, যখন এটির মধ্যে রয়েছে

./configure VAR=value

আচরণটি কনফিগার-স্ক্রিপ্টের উপর নির্ভর করে। কিছু বিকাশকারী পরবর্তীকালে পছন্দ করেন কারণ কেউ বাইরে থেকে স্ক্রিপ্টের ভেরিয়েবলগুলি যাদুতে সেট করে না দিয়ে স্ক্রিপ্টের মধ্যে ভেরিয়েবল সেট করতে চান কিনা তা বেছে নিতে চান।

অনুশীলনে, সামান্য পার্থক্য কারণ

  • কনফিগারেশন করা বেশিরভাগ লোকেরা পসিক্স শেল থেকে চলছে, যেখানে আগের আচরণটি "স্রেফ কাজ করে", এবং
  • বেশিরভাগ কনফিগার স্ক্রিপ্টগুলি বিদ্যমান পরিবেশের ভেরিয়েবলগুলি আনসেট করে না এবং
  • প্রচলিত পরিবেশ পরিবর্তনশীল (অটোমেকের বাইরের) এর দীর্ঘ-প্রতিষ্ঠিত ব্যবহার রয়েছে

উদাহরণস্বরূপ, বাশ কনফিগার স্ক্রিপ্টের --helpবার্তাটি এটি দেখায়:

Some influential environment variables:
  DEBUGGER_START_FILE
              location of bash debugger initialization file
  CC          C compiler command
  CFLAGS      C compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  LIBS        libraries to pass to the linker, e.g. -l<library>
  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
              you have headers in a nonstandard directory <include dir>
  CPP         C preprocessor
  YACC        The `Yet Another C Compiler' implementation to use. Defaults to
              the first program found out of: `bison -y', `byacc', `yacc'.
  YFLAGS      The list of arguments that will be passed by default to $YACC.
              This script will default YFLAGS to the empty string to avoid a
              default value of `-d' given by some make applications.

এবং প্রতিটি ক্ষেত্রে, পরিবর্তনশীল সেটিং উভয় ক্ষেত্রেই কাজ

তবে বিকাশকারীদের পছন্দগুলি মনে রাখবেন, যদি কেউ বিষয়গুলিতে "উন্নতি" করার সিদ্ধান্ত নেয়।

আরও পড়া:

AC_ARG_VARম্যাক্রো স্ক্রিপ্টের জন্য একটি আর্গুমেন্ট হিসাবে একটি নির্দিষ্ট (পরিবেশ) ভেরিয়েবল ডিক্লেয়ার করা, এটি একটি বিবরণ এবং একটি নির্দিষ্ট ব্যবহারের দান ব্যবহার করা হয়। এই বৈশিষ্ট্যটি অটোকনফের ইতিহাসে তুলনামূলকভাবে সম্প্রতি যুক্ত করা হলেও এটি সত্যই গুরুত্বপূর্ণ। এর আরও সাম্প্রতিক উপস্থিতিকে প্রতিফলিত করে, ম্যাক্রোর AS_HELP_STRINGসাহায্যকারীর প্রয়োজন হয় না এবং কেবল দুটি পরামিতি লাগে: ./configure --help: চলকটির নাম এবং স্ট্রিংটি মুদ্রিত হয়:

AC_ARG_VAR(var-name, help-string)

এবং দীর্ঘকালীন অনুশীলন সম্পর্কে একটি মন্তব্য দিয়ে অবিরত:

ডিফল্টরূপে, কনফিগার করুন পরিবেশ থেকে ভেরিয়েবলগুলি অন্য কোনও শ স্ক্রিপ্টের মতো বেছে নেয়। এগুলির বেশিরভাগ উপেক্ষা করা হয়। যাঁরা নয় তাদের এই ম্যাক্রোর মাধ্যমে ঘোষণা করা উচিত। এইভাবে তারা একটি মূল্যবান পরিবর্তনশীল হিসাবে চিহ্নিত করা হয়।

মূল্যবান হিসাবে চিহ্নিত একটি পরিবর্তনশীল একটি সুস্পষ্ট কল না করে Makefile.in এ প্রতিস্থাপন হয়ে যায়AC_SUBST , তবে এটি সংজ্ঞাটির সবচেয়ে গুরুত্বপূর্ণ অংশ নয়। কী গুরুত্বপূর্ণ তা হল ভেরিয়েবলটি ক্যাশে করা হয়।

  • .2.২ সেটআপ আউটপুট ভেরিয়েবলগুলি (অটোকনফ ডকুমেন্টেশন)
    বর্ণনা করে AC_ARG_VAR, আবার বিকাশকারীদের পছন্দগুলি প্রকাশ করে:

    কনফিগার চালু করার সময় ভেরিয়েবলের মানটি ক্যাশে সংরক্ষণ করা হয়, এটি কমান্ড লাইনে না থাকলেও পরিবেশের মাধ্যমে নির্দিষ্ট করা থাকে including প্রকৃতপক্ষে, কনফিগারারে './configure সিসি = উদ্ভট-সিসি'-তে সিসির সংজ্ঞাটি লক্ষ্য করা যায়, তবে এটি' সিসি = উদ্ভট-সিসি। / কনফিগার 'এ লক্ষ্য করা অসম্ভব, যা দুর্ভাগ্যক্রমে, বেশিরভাগ ব্যবহারকারীরা করেন।


কীভাবে env VAR=value ./configureসম্পর্কিত তা আপনি বর্ণনা করতেও পারেনVAR=value ./configure
কুসালানন্দ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.