ভিজ্যুয়াল স্টুডিও সি ++ প্রকল্পের ফাইলগুলি তৈরি করতে সিএমকে ব্যবহার করুন


96

লিনাক্স এবং উইন্ডোজে সংকলিত কোডের জন্য আমি একটি ওপেন সোর্স সি ++ প্রকল্পে কাজ করছি। আমি লিনাক্সে কোড তৈরি করতে সিএমকে ব্যবহার করি। উন্নয়নের সেটআপ এবং রাজনৈতিক কারণে স্বচ্ছতার জন্য, আমাকে উইন্ডোজের ভিজ্যুয়াল স্টুডিও প্রকল্প ফাইল / সম্পাদককে আঁকিয়ে রাখতে হবে ( উদাহরণস্বরূপ আমি কোড :: ব্লকগুলিতে স্যুইচ করতে পারি না )। আমি এখানে সিএমকে ব্যবহার করে ভিজ্যুয়াল স্টুডিও ফাইলগুলি উত্পন্ন করার জন্য নির্দেশাবলী দেখছি ।

আপনি কি এর আগে ভিজ্যুয়াল স্টুডিও ফাইলগুলি তৈরি করতে সিএমকে ব্যবহার করেছেন? আপনার অভিজ্ঞতা কেমন হয়েছে? মনে করুন আমি আমার প্রকল্পে একটি নতুন ফাইল যুক্ত করতে চাই। এর জন্য কর্মপ্রবাহ কী?


4
জিএনইউ + লিনাক্সের মধ্যে যারা উইন্ডোজ-নির্দিষ্ট, ভিজ্যুয়াল স্টুডিওর জন্য প্রজেক্ট ফাইল তৈরি করার চেষ্টা করছেন তাদের এই উত্তরটি মনে রাখবেন। টিএল; ডিআর: জেনারেটর প্ল্যাটফর্ম-নির্দিষ্ট এবং এটি করতে আপনার অবশ্যই উইন্ডোতে থাকতে হবে।
কোড_ড্রেড

উত্তর:


60

সিএমকে আসলে এটির জন্য বেশ ভাল। মূল অংশটি ছিল উইন্ডোজ পক্ষের প্রত্যেককে সমাধানটি লোড করার আগে সিএমকে চালানো মনে রাখতে হবে এবং আমাদের ম্যাক পক্ষের প্রত্যেককে এটি তৈরির আগে চালানো মনে রাখতে হবে।

উইন্ডোজ বিকাশকারী হিসাবে সবচেয়ে শক্তিশালী অংশটি নিশ্চিত করা হয়েছিল যে আপনার কাঠামোগত পরিবর্তনগুলি cmakelist.txt ফাইলে রয়েছে এবং সমাধান বা প্রকল্পের ফাইলগুলিতে নয় কারণ এই পরিবর্তনগুলি সম্ভবত হারাতে পারে এবং হারিয়ে না গেলেও ম্যাক পক্ষের কাছে স্থানান্তরিত হবে না যিনি এছাড়াও তাদের প্রয়োজন, এবং ম্যাক ছেলেরা একই কারণে মেক ফাইলটি সংশোধন না করার কথা মনে রাখতে হবে।

এটির জন্য কেবল একটু চিন্তাভাবনা এবং ধৈর্য প্রয়োজন তবে প্রথমে ভুল হবে। তবে আপনি যদি উভয় পক্ষের ক্রমাগত সংহতকরণ ব্যবহার করে থাকেন তবে এগুলি তাড়াতাড়ি ঝাঁকুনি হয়ে যাবে এবং লোকেরা শেষ পর্যন্ত অভ্যাসে পরিণত হবে।


11
এটি যদি একবার সত্য হয় তবে তা আর হয় না। সিএমকেলিস্ট.টেক্সটে যে কোনও পরিবর্তনগুলি বিল্ড সিস্টেমের পুনর্বারণ ঘটায় (ভিজ্যুয়াল স্টুডিও, মেকফিলস ইত্যাদির জন্য প্রকল্প ফাইলগুলি)। ভিজ্যুয়াল স্টুডিওর মধ্যে কর্মপ্রবাহটি এক প্রকার বিরক্তিকর, যেহেতু ভিজ্যুয়াল স্টুডিও প্রকল্প ফাইলগুলি পুনরায় জেনারেট করে না যখন এটি সনাক্ত করে যে বিষয়গুলি পরিবর্তন হয়েছে তবে পরিবর্তে আপনার জন্য একটি বিল্ড করার অপেক্ষায় যার ফলে একটি ডায়ালগ দেখা দেয় কারণ বিল্ডটি পুনরায় বন্ধ রাখতে হবে build প্রকল্প ফাইলটি লোড করুন।
ভিটালী

4
এটির সতর্কতা হ'ল আপনাকে আইডিই এর মাধ্যমে ভিজ্যুয়াল স্টুডিও সংকলকটি চালাতে হবে না। আপনি এটি কমান্ড লাইনে চালাতে পারেন:C:\...> MSBuild ALL_BUILD.vcxproj
PfunnyGuy

4
আরও দেখুন @PfunnyGuy cmake --build .
স্পষ্টভাবে

4
@ বিস্তারিত ধন্যবাদ! আমি আসলে এটি খুঁজে পেয়েছি এবং ব্যবহার করতে পারি cmake --build . --config Debug -- /nologo /verbosity:minimal /m। আমি . target run_testsআমার গুগলতেস্ট ইউনিট পরীক্ষা চালানোর পরে প্রবেশ করবো এবং "ডিবাগ" "রিলিজ" দিয়ে প্রতিস্থাপন করা যাবে। (ডিবাগের জন্য কনফিগার বিকল্পটি যুক্ত করা option
চ্ছিক

50

এটি সরাসরি প্রশ্নের সাথে সম্পর্কিত কিনা তা নিশ্চিত নই, তবে আমি কিভাবে cmake প্রকল্পগুলি থেকে * .sln তৈরি করতে পারি তার উত্তর খুঁজছিলাম যে আমি আবিষ্কার করেছি যে এই জাতীয় কিছু ব্যবহার করতে পারে:

cmake -G "Visual Studio 10"

উদাহরণটি ইনপুট CMakeLists.txt ফাইল থেকে প্রয়োজনীয় ভিএস 2010 ফাইল উত্পন্ন করে


4
stackoverflow.com/questions/11269833/... @Ivan পয়েন্ট আউট যে এই আপনার টপ লেভেল CMakeLists.txt হিসাবে একই ফোল্ডারে একটি ফাইল PreLoad.cmake মধ্যে রেখে দেওয়া যেতে পারে এবং তারপর আপনি শুধু করতে পারি না cmake
পিফুনিগুই

26

আমরা আমাদের বিভাগের বিল্ড চেইন সিএমকে সরিয়ে নিয়েছি এবং অন্যান্য বিভাগগুলি থেকে আমাদের প্রকল্প ফাইলগুলি ব্যবহার করে এবং কেবল তাদের সমাধানগুলিতে আমদানি করতে অভ্যস্ত যেখানে আমাদের কয়েকটি অভ্যন্তরীণ রোডবাম্প ছিল। সিএমকে ভিজ্যুয়াল স্টুডিও প্রকল্প / সমাধান ম্যানেজারের সাথে পুরোপুরি সংহত না করা সম্পর্কে আমাদের কিছু অভিযোগ ছিল, সুতরাং ফাইলগুলি সিএমকেলিস্ট.টেক্সট এ ম্যানুয়ালি যুক্ত করতে হয়েছিল; এটি কর্মপ্রবাহের একটি প্রধান বিরতি ছিল যা মানুষ অভ্যস্ত ছিল।

তবে সাধারণভাবে এটি ছিল বেশ মসৃণ রূপান্তর। প্রকল্পের ফাইলগুলি আর আমাদের মোকাবেলা করতে হবে না বলে আমরা খুব খুশি।

একটি প্রকল্পে একটি নতুন ফাইল যুক্ত করার জন্য কংক্রিট কর্মপ্রবাহ সত্যিই সহজ:

  1. ফাইলটি তৈরি করুন, এটি সঠিক জায়গায় রয়েছে তা নিশ্চিত করুন।
  2. ফাইলটি CMakeLists.txt এ যুক্ত করুন।
  3. নির্মাণ।

যদি কোনও সিএমকেলিস্ট.টেক্সট ফাইল পরিবর্তিত হয় (এবং (আধা-) স্বয়ংক্রিয়ভাবে সমাধান / প্রকল্পগুলি পুনরায় লোড করে) তবে সিএমকে ২.6 স্বয়ংক্রিয়ভাবে নিজেকে পুনরায় সংযুক্ত করে।

মনে রাখবেন যে আপনি যদি সোর্স বিল্ডগুলি করছেন তবে আপনার বিল্ড ডিরেক্টরিতে উত্স ফাইলটি তৈরি না করার বিষয়ে সতর্কতা অবলম্বন করা উচিত (যেহেতু ভিজুয়াল স্টুডিও কেবল বিল্ড ডিরেক্টরিটি সম্পর্কে জানেন)।


11

সিএমকে একচেটিয়াভাবে ভিজ্যুয়াল স্টুডিও প্রকল্প এবং সমাধান উত্পাদন করে। এমনকি আপনি সিএমকে ফাইলগুলিতে কোনও পরিবর্তন না করেই বিভিন্ন ভিজ্যুয়াল স্টুডিও সংস্করণগুলির জন্য প্রকল্প / সমাধান উত্পাদন করতে পারেন।

উত্স ফাইল যুক্ত করা এবং অপসারণ করা কেবল উত্স ফাইলগুলির তালিকাগুলি সংশোধন করার CMakeLists.txtএবং প্রকল্পগুলি / সমাধানগুলি পুনরায় তৈরি করার বিষয়। এমনকি একটি ডিরেক্টরিতে সমস্ত উত্স খুঁজে পেতে একটি গ্লোববিং ফাংশন রয়েছে (যদিও এটি সতর্কতার সাথে ব্যবহার করা উচিত)।

নিম্নলিখিত লিঙ্কটি সিএমকে এবং ভিজ্যুয়াল স্টুডিওর নির্দিষ্ট আচরণটি খুব ভালভাবে ব্যাখ্যা করে।

সিএমকেক এবং ভিজ্যুয়াল স্টুডিও


4
এই লিঙ্কটি এবং এর নমুনা প্রকল্পটি খুব, খুব দরকারী, তার জন্য ধন্যবাদ! আমি আপনার উত্তরে গিথুব রেপো থেকে উত্স কোডের কিছু অন্তর্ভুক্ত করার সুপারিশ করব , উদাহরণস্বরূপ যে সিএমকে প্রকল্পটি একটি সমাধানের সমতুল্য এবং ভিজ্যুয়াল স্টুডিও প্রকল্পের সমতুল্য যোগ করার জন্য অ্যাড_এক্সেকটেবলের মতো কিছু ব্যবহার করা হয়।
জুন 23

10

অ্যালেক্স যেমন বলেছেন, এটি খুব ভাল কাজ করে। শুধুমাত্র কৌশলগত অংশটি ভিজুয়াল স্টুডিওর পরিবর্তে চ্যাট করা ফাইলগুলিতে কোনও পরিবর্তন করা মনে রাখা। সুতরাং সমস্ত প্ল্যাটফর্মে, ওয়ার্কফ্লো একই রকম হয় যদি আপনি সাধারণ পুরানো মেকফিলগুলি ব্যবহার করেন।

তবে এটির সাথে কাজ করা মোটামুটি সহজ এবং আমার চটজলদি অবৈধ ফাইল বা এ জাতীয় কিছু উত্পন্ন করার ক্ষেত্রে কোনও সমস্যা নেই, তাই আমি খুব বেশি চিন্তা করব না।


6

সিএমকে সত্যিই দুর্দান্ত ভিজ্যুয়াল স্টুডিও .projs/ উত্পন্ন করতে .slnsপারে তবে .cmakeফাইলগুলির পরিবর্তে .proj/ পরিবর্তনের পরিবর্তে সর্বদা সমস্যা থাকে .sln। এটি এখন যেমন রয়েছে, আমরা নীচে এটির সাথে কাজ করছি:

  1. সমস্ত উত্স ফাইলগুলিতে যায় /srcএবং ভিজ্যুয়াল স্টুডিওতে দৃশ্যমান ফাইলগুলি তাদের সংজ্ঞায়িত করা কেবল "লিঙ্ক" .filter
  2. প্রোগ্রামার /srcডিফল্ট প্রকল্পের নয়, সংজ্ঞায়িত ডিরেক্টরিতে কাজ করার জন্য স্মরণযোগ্য ফাইলগুলি যুক্ত করে / মুছে দেয় ।
  3. তিনি হয়ে গেলে, তিনি একটি স্ক্রিপ্ট চালান যা সংশ্লিষ্ট .cmakeফাইলগুলিকে "রিফ্রেশ" করে ।
  4. কোডটি বিনোদনমূলক পরিবেশে তৈরি করা যায় কিনা তা তিনি পরীক্ষা করেন।
  5. তিনি কোডটি কমিট করেন।

এটি কীভাবে রূপান্তরিত হবে সে সম্পর্কে প্রথমে আমরা কিছুটা ভয় পেয়েছিলাম, কিন্তু কার্যপ্রবাহটি সত্যই ভাল কাজ করে এবং প্রতিটি প্রতিশ্রুতি দেওয়ার আগে দৃশ্যমান দুর্দান্ত পার্থক্য সহ, প্রত্যেকে সহজেই দেখতে পারে যে তার পরিবর্তনগুলি .cmakeফাইলগুলিতে সঠিকভাবে ম্যাপ করা হয়েছে কিনা ।

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


4
সিএমকে ২.৮.১০ হিসাবে, উত্পন্ন সমাধানগুলিতে ৪ টি প্রচলিত বিল্ড কনফিগারেশন রয়েছে এবং অতিরিক্ত কাস্টমগুলি সংজ্ঞায়িত করার জন্য সমর্থন রয়েছে।
জন


0

আমি আমার নিজস্ব প্রকল্প শুরু করেছি, যার নাম সিঙ্কপ্রোজ। ডকুমেন্টেশন / ডাউনলোড লিঙ্কগুলি এখান থেকে:

https://docs.google.com/docament/d/1C1YrbFUVpTBXajbtrC62aXru2om6dy5rClyknBj5zHU/edit# https://sourceforge.net/projects/syncproj/

আপনি যদি উন্নয়নের জন্য ভিজ্যুয়াল স্টুডিও ব্যবহার করার পরিকল্পনা করছেন এবং বর্তমানে কেবলমাত্র সি ++ সমর্থিত।

অন্যান্য মেক সিস্টেমের তুলনায় প্রধান সুবিধা হ'ল এটি আসলে আপনার স্ক্রিপ্টটি ডিবাগ করতে পারেন, এটি সি # ভিত্তিক।

আপনি যদি সিঙ্কপ্রোজের সাথে পরিচিত না হন তবে আপনি কেবল নিজের সমাধান / প্রকল্পকে .cs স্ক্রিপ্টে রূপান্তর করতে পারেন এবং সেই দিক থেকে আরও বিকাশ চালিয়ে যেতে পারেন।

কমকে আপনাকে স্ক্র্যাচ থেকে সবকিছু লিখতে হবে।

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