জিএনইউ মেক দিয়ে সিএমকে ব্যবহার করে: সঠিক আদেশগুলি আমি কীভাবে দেখতে পারি?


281

আমি জিএনইউ মেকের সাথে সিএমকে ব্যবহার করি এবং সমস্ত আদেশগুলি হুবহু দেখতে চাই (উদাহরণস্বরূপ কীভাবে সংকলকটি কার্যকর করা হয়, সমস্ত পতাকা ইত্যাদি)।

জিএনইউ মেক আছে --debug, তবে এটি অন্য কোনও বিকল্প আছে বলে সহায়ক বলে মনে হচ্ছে না? সিএমকে ডিবাগিংয়ের উদ্দেশ্যে উত্পন্ন মেকফিলগুলিতে অতিরিক্ত পতাকা সরবরাহ করে?


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


mkdir build; cd build; cmake .. --debug-output; make VERBOSE=1
পরশ্রিশ

উত্তর:


369

আপনি যখন মেক চালান, VERBOSE=1সম্পূর্ণ কমান্ড আউটপুট দেখতে যুক্ত করুন । উদাহরণ স্বরূপ:

cmake .
make VERBOSE=1

অথবা আপনি -DCMAKE_VERBOSE_MAKEFILE:BOOL=ONউত্পাদিত মেকফিলগুলি থেকে স্থায়ী ভার্বোস কমান্ড আউটপুট জন্য cmake কমান্ডে যুক্ত করতে পারেন ।

cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make

কিছুটা কম-আকর্ষণীয় আউটপুট হ্রাস করতে আপনি নিম্নলিখিত বিকল্পগুলি ব্যবহার করতে পছন্দ করতে পারেন। বিকল্পটি [33%] বিল্ডিং সি অবজেক্টেরCMAKE_RULE_MESSAGES=OFF মতো লাইনগুলি সরিয়ে দেয় ...--no-print-directory এবং বর্তমান লাইব্রেরিগুলিকে make[1]: Entering directoryএবং এর মতো লাইনগুলি ফিল্টারিং প্রিন্ট আউট না করার কথা বলছে make[1]: Leaving directory

cmake -DCMAKE_RULE_MESSAGES:BOOL=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make --no-print-directory

12
এই সমাধানগুলি এটিকে খুব ভার্জোজ করে তোলে, প্রচুর সিএমকে মুদ্রণ করে এবং ইন্টার্নালগুলি তৈরি করে যা আকর্ষণীয় নয়। কেবলমাত্র সংকলন এবং লিঙ্ক কমান্ডগুলি দেখানোর কোনও উপায় আছে (অর্থাত্ ডিবাগিং সমস্যার ক্ষেত্রে যা সাধারণত প্রাসঙ্গিক)। সম্ভবত এমনকি ব্যর্থ কমান্ডটি প্রদর্শন করুন।
ট্রনিক

শীর্ষস্থানীয় গুগল হিট সুপারিশ করে "যদি আপনি শুধুমাত্র জি ++ কমান্ড লাইনগুলি দেখতে চান তবে আপনার গ্রেপ অ্যান্ড কোং ব্যবহার করা উচিত - যদি সম্ভব হয় - ভার্জোজ মেকফিলস সম্পর্কিত" । সম্ভবত প্রচুর চেক অভিজ্ঞতার সাথে বিকাশকারীদের কাছে অন্য পরামর্শ রয়েছে।
ট্রেভর বয়েড স্মিথ 12

7
যাইহোক, আপনি যদি এমন প্ল্যাটফর্মে থাকেন যা এটি সমর্থন করে তবে cmake -GNinja . ; ninja -vন্যূনতম ফ্লাফের সাথে খুব সুন্দর ভার্বোজ আউটপুট দেখায়।
richq

10
একক লাইন ...cmake --build . -- VERBOSE=1
লেটমাইক

স্পষ্টতই, আমি অবশ্যই একটি নতুন cmake সংস্করণ নিয়ে কাজ করছি, কারণ cmake চালানোর পরে আমার বিল্ড ডিরেক্টরিতে কোনও মেকফাইল পাওয়া যায় নি ...
ড্রাম এম

80

CMakeLists.txtফাইলটিতে বিকল্পটি সেট করা সুবিধাজনক :

set(CMAKE_VERBOSE_MAKEFILE ON)

3
আপনার নিজের প্রকল্পের জন্য এটি করবেন না দয়া করে। আপনার সমস্ত ব্যবহারকারীরা আপনার ভার্বোজ বিল্ড আউটপুট দেখতে চাইতে পারে না। আপনার লাইব্রেরি গ্রাসকারী প্রত্যেকের উপর এটি জোর করবেন না। CMAKE_VERBOSE_MAKEFILE ডিবাগ করার উদ্দেশ্যে ডিফল্টরূপে এবং ব্যবহারকারীর পছন্দের প্রয়োজন হলে, বন্ধ করা উচিত।
Ela782

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

1
Qt.io QtCretor ব্যবহার করার সময় এটি একটি দুর্দান্ত বিকল্প কারণ জিইআইআই দ্বারা সিএমকে বলা হয়। ধন্যবাদ!
গ্র্যান্ট রোস্টিগ

9

অথবা কেবল শেলের উপরে VERBOSE পরিবেশের পরিবর্তনশীল রফতানি করুন: export VERBOSE=1


8

আপনি যদি সিএমকে জিইউআই ব্যবহার করেন তবে উন্নত দৃশ্যে অদলবদল করুন এবং তারপরে বিকল্পটিকে CMAKE_VERBOSE_MAKEFILE বলা হবে।


জিইআইআই ব্যবহার না করে আমি কীভাবে পাঠ্য ফাইলগুলিতে এই বিকল্পটি সেট করতে পারি?
osgx

4

-ggdbপতাকাটি উপস্থিত ছিল তা নিশ্চিত করার জন্য আমি অনুরূপ কিছু চেষ্টা করছিলাম ।

একটি পরিষ্কার ডিরেক্টরিতে কল করুন এবং আপনি যে পতাকাটি সন্ধান করছেন তা গ্রেপ করুন। আমি লিখতে debugচেয়ে বরং সন্ধান করছি ggdb

make VERBOSE=1 | grep debug

-ggdbপতাকা অস্পষ্ট যথেষ্ট যে শুধুমাত্র কম্পাইল কমান্ড popped আপ ছিল।

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