ইউনিক্সে, আমি প্রথমে সেই ডিরেক্টরিটিতে সিডি না করে কোনও ডিরেক্টরিতে 'মেক' চালাতে পারি?


210

ইউনিক্সে, আমি প্রথমে সেই ডিরেক্টরিটিতে 'ইনগ' makeনা করেই কোনও ডিরেক্টরি চালাতে পারি cd?

উত্তর:


338

make -C /path/to/dir


8
গ্র্যাম্প - এটি স্ট্যান্ডার্ড মেকে নেই; এটি অবশ্যই একটি জিএনইউ এক্সটেনশন হতে হবে। যেহেতু আপনি লিনাক্স এবং ইউনিক্স বলছেন তাই আপনি কোনটি চান তা পরিষ্কার নয়, তবে -সি বিকল্পটি সোলারিস 10 (/ usr / ccs / bin / make), এআইএক্স (/ usr / বিন / মেক), বা কাজ করবে না এইচপি-ইউএক্স 11.23 (/ ইউএসআর / বিন / মেক) তবুও, 4 এর মধ্যে 1 টি খুব খারাপ নয়।
জোনাথন লেফলার

6
এটি BSD তৈরিতেও কাজ করে, সুতরাং এটি কেবল একটি GNU এক্সটেনশান নয়।
ক্রিস ডড

4
নিশ্চিত করুন যে 'সি' উচ্চতর ক্ষেত্রে রয়েছে।
m.r226

101

অন্যান্য উত্তরে যেমন উল্লেখ করা হয়েছে, মেক (1) এর জন্য একটি -C বিকল্প রয়েছে ; বেশ কয়েকটি কমান্ডের অনুরূপ বিকল্প রয়েছে (উদাহরণস্বরূপ টার)। এটি লক্ষ্য করা দরকারী যে অন্যান্য কমান্ডের ক্ষেত্রে যেমন বিকল্পগুলির অভাব রয়েছে নিম্নলিখিত ব্যবহার করা যেতে পারে:

(cd /dir/path && command-to-run)

এটি একটি সাব-শেলটিতে কমান্ডটি চালায় যা প্রথমে তার কার্যকরী ডিরেক্টরিটি পরিবর্তিত হয়েছে (প্যারেন্ট শেলটির কার্যকরী ডিরেক্টরিটি একা রেখে যাওয়ার সময়)। ডিরেক্টরিটি পরিবর্তন করা যায় না এমন ত্রুটিযুক্ত মামলাগুলি ধরার && পরিবর্তে এখানে ব্যবহৃত হয় ;


22

আপনি যদি কোনও ডিরেক্টরিতে সিডি না করতে চান তবে কারণ পরবর্তী কোনও কাজের জন্য আপনাকে বর্তমান ডিরেক্টরিতে থাকতে হবে, আপনি পুশড এবং পপড ব্যবহার করতে পারেন:

pushd ProjectDir ; make ; popd

এটি প্রোজেক্টডায়ারে যায়, রান প্রস্তুত করে এবং আপনি যেখানে ছিলেন সেখানে ফিরে যায়।


11

এছাড়াও আপনি ব্যবহার করতে পারেন:

make --directory /path/to/dir

-3

Makefile:

all:
    gcc -Wall -Wpedantic -std=gnu99 -g src/test.c -o build/test

run:
    ./build/test

অথবা

run:
    ./../build/test

প্রভৃতি


1
উত্তরটি পুরোপুরি প্রশ্নটি মিস করেছে - এটি কীভাবে মেকফাইল লিখতে হয় তা নয়, কীভাবে মেকফাইল লিখবেন।
পেট্র
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.