ইন্টারফেস নির্ভরতা সিলেক্ট করুন_লিংক_লাইবারিগুলি


99

আমি সিএমকে নতুন এবং এর সাথে সম্পর্কিত পাবলিক, প্রাইভেট এবং ইন্টারফেস কীওয়ার্ডগুলির সাথে কিছুটা বিভ্রান্ত target_link_libraries()। ডকুমেন্টেশন উল্লেখ করেছে যে তারা লিঙ্ক নির্ভরতা এবং লিঙ্ক ইন্টারফেস উভয়ই একটি কমান্ডে নির্দিষ্ট করতে ব্যবহার করতে পারে।

লিঙ্ক নির্ভরতা এবং লিঙ্ক ইন্টারফেস বলতে আসলে কী বোঝায়?


4
একই প্রশ্ন: stackoverflow.com/questions/26243169/...
TManhente

উত্তর:


202

যদি আপনি একটি ভাগ করা লাইব্রেরি তৈরি করেন এবং আপনার উত্স সিপিপি ফাইলগুলি # অন্য লাইব্রেরির শিরোনাম অন্তর্ভুক্ত করুন (উদাহরণস্বরূপ, QtNetwork বলুন), তবে আপনার শিরোনাম ফাইলে QtNetwork শিরোনাম অন্তর্ভুক্ত নয়, তবে QtNetwork একটি PRIVATEনির্ভরতা।

যদি আপনার উত্স ফাইল এবং আপনার শিরোনামগুলিতে অন্য লাইব্রেরির শিরোনামগুলি অন্তর্ভুক্ত থাকে তবে এটি PUBLICনির্ভরতা।

যদি আপনার হেডার ফাইলগুলি নাও আপনার উত্স ফাইলগুলিতে অন্য লাইব্রেরির শিরোনাম অন্তর্ভুক্ত থাকে তবে এটি INTERFACEনির্ভরতা।

অন্যান্য বিল্ড বৈশিষ্ট্য PUBLICএবং INTERFACEনির্ভরতা গ্রাহক গ্রন্থাগারগুলিতে প্রচারিত হয়। http://www.cmake.org/cmake/help/v3.0/manual/cmake-builds system.7.html#transitive-usage-requirements


40
এটি আমি শুনেছি এই প্রশ্নের সবচেয়ে স্পষ্ট ব্যাখ্যা। কামাকের ডকুমেন্টেশন গুলো যেমন পরিষ্কার হয় তেমন কামনা করি ! :-)
Ela782

4
আমি এখন ব্যাখ্যাটি বুঝেছি তার ব্যাখ্যাটির জন্য ধন্যবাদ তবে কেন নির্দিষ্টকরণ PUBLICবা PRIVATEবিষয়টি গুরুত্বপূর্ণ? এটা কি পরিবর্তন হয়?
user3667089

8
ব্যবহার PRIVATEআপনার লাইব্রেরির সাথে সংযুক্ত প্রকল্পগুলিতে আপনার নির্ভরতা যুক্ত করে না। এটি পরিষ্কার এবং এটি আপনার নির্ভরতা এবং আপনার ব্যবহারকারীর মধ্যে সম্ভাব্য দ্বন্দ্বগুলি এড়িয়ে যায়।
ব্যবহারকারী2658323

7
@ স্টিভায়ার স্পষ্টতার স্বার্থে, স্পষ্ট করে বলা উচিত যে "অন্তর্ভুক্ত" অর্থ কেবল প্রত্যক্ষ অন্তর্ভুক্তি নয়, ট্রানজিটিভ অন্তর্ভুক্তি। উদাহরণস্বরূপ, যদি অন্য লাইব্রেরির হেডার ফাইলগুলি কেবল আপনার শিরোনামের ফাইলগুলি দ্বারা সরাসরি অন্তর্ভুক্ত থাকে তবে আপনার সমস্ত ফাইলের শিরোনাম ফাইলগুলি আপনার উত্স ফাইলগুলি অন্তর্ভুক্ত করে, তবে আপনার উত্স ফাইলগুলি অন্য লাইব্রেরির শিরোনাম ফাইলগুলিকে সংক্রামিতভাবে অন্তর্ভুক্ত করে, এবং তাই আপনার PUBLICনির্ভরতা নেই, একটি INTERFACEনির্ভরতা।
ওস

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