সিএমকেকের পরিবর্তে ক্লিওনের জন্য স্থানীয় মেকফাইল ব্যবহার করা


148

সিএমকে না দিয়ে কোড কম্পাইল করার জন্য স্থানীয় মেকফিল ব্যবহার করার জন্য ক্লিওনকে কনফিগার করার কোনও উপায় আছে কি? বিল্ড অপশনগুলি থেকে এটি করার উপায় আমি খুঁজে পাচ্ছি বলে মনে হচ্ছে না।

উত্তর:


142

আপডেট: আপনি যদি ক্লিওন 2020.2 ব্যবহার করেন তবে এটি ইতিমধ্যে মেকফিলগুলি সমর্থন করে। আপনি যদি কোনও পুরানো সংস্করণ ব্যবহার করছেন তবে পড়ুন।


যদিও বর্তমানে কেবল সিএমকেই সমর্থনযোগ্য, আপনি সিএমকেকে makeআপনার কাস্টম দিয়ে কল করার নির্দেশ দিতে পারেন Makefile। আপনার CMakeLists.txtএই দুটি কমান্ডের একটি যুক্ত করে সম্পাদনা করুন :

আপনি যখন CLionআপনার প্রোগ্রামটি চালিত করতে বলবেন , তখন এটি নির্দেশিত ডিরেক্টরিতে লক্ষ্যটির একই নামের সাথে একটি নির্বাহযোগ্যকে অনুসন্ধান করার চেষ্টা করবে PROJECT_BINARY_DIR। সুতরাং যতক্ষণ আপনার makeফাইলটি উত্পন্ন করে যতক্ষণ CLionপ্রত্যাশা করে, ততক্ষণ কোনও সমস্যা হবে না।

এখানে একটি কার্যকারী উদাহরণ:

CLionএর $ (PROJECT_BINARY_DIR) কে পাস করতে বলুনmake

এটি নমুনা CMakeLists.txt:

cmake_minimum_required(VERSION 2.8.4)
project(mytest)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

add_custom_target(mytest COMMAND make -C ${mytest_SOURCE_DIR}
                         CLION_EXE_DIR=${PROJECT_BINARY_DIR})

CLion'sডিরেক্টরিতে এক্সিকিউটেবল জেনারেট করতে বলুন

এটি নমুনা Makefile:

all:
    echo Compiling $(CLION_EXE_DIR)/$@ ...
    g++ mytest.cpp -o $(CLION_EXE_DIR)/mytest

এগুলি হ'ল, আপনি আপনার প্রোগ্রামের কার্যনির্বাহী ডিরেক্টরিও পরিবর্তন করতে চাইতে পারেন যাতে আপনি যখন আপনার ডিরেক্টরিটির ভিতরে থেকে রান প্রস্তুত করেন তখন এটি কার্যকর হয়। এই সম্পাদনার জন্য:Run -> Edit Configurations ... -> mytest -> Working directory


আমি এখনও আপনার উপরের পরামর্শটি চেষ্টা করে দেখিনি, তবে আমি কি ক্লায়নের মধ্যে আমার সি / সি ++ প্রোগ্রামগুলি সম্পাদন করতে সক্ষম হব? (এটি ডিবাগিংয়ের প্রক্রিয়াটিকে আরও সহজ করে তুলবে))
hlin117

3
আমি যাচাই করেছি যে @ মন্ডকিনের সমাধান কাজ করে। আপনি পরিবর্তন পর প্রকল্প নির্মাণের সমস্যা হলে Makefileএবং CMakeLists.txtএকটি সংশোধন করার চেষ্টা করুন *.cppফাইল। এটি ক্লিওনকে স্ক্র্যাচ থেকে সমস্ত কিছু তৈরি করতে হবে।
hlin117

এটি কাজ করে, তবে যখন আমি কনফিগারেশনে "পরিষ্কার" যুক্ত করার চেষ্টা করি তখন এটি ব্যর্থ হয়।
71GA

1
এফওয়াইআই এটির কাজটি পেতে, কমপক্ষে কয়েকটি প্রকল্পের জন্য (যেমন রেডিস), আপনাকে একটি 'সব' যুক্ত করতে হবে, এটি তৈরি করে: add_custom_target (মাইয়েস্ট সমস্ত কম্যান্ড মেক-সি {{মাইয়েস্ট_সেসিআরসিআইডিআইআর} সিএলআইএনএক্স_ডির = $ J PROJECT_BINARY_DIR} )
ডেকার

1
এটিকে সিসি
রোমেন-পি

33

যদিও এটি সর্বাধিক ভোট দেওয়া বৈশিষ্ট্য অনুরোধগুলির মধ্যে একটি , ভিক্টর ক্রপের একটি প্লাগইন উপলব্ধ রয়েছে যা মেকফাইলে সমর্থন যোগ করে:

ইন্টেলিজ আইডিইএর জন্য মেকফিল সমর্থন প্লাগইন

ইনস্টল করুন

আপনি সরকারী সংগ্রহস্থল থেকে সরাসরি ইনস্টল করতে পারেন:

সেটিংস> প্লাগইনস> সন্ধান makefile> ভান্ডারে অনুসন্ধান> ইনস্টল> পুনঃসূচনা art

ব্যবহার

চালানোর জন্য কমপক্ষে তিনটি ভিন্ন উপায় রয়েছে:

  1. কোনও মেকফাইলে রাইট ক্লিক করুন এবং রান নির্বাচন করুন
  2. , সম্পাদকে Makefile খোলা (লাইন কোথাও) এক লক্ষ্য উপর কার্সার রাখুন, আঘাত alt+ + enter, তারপর নির্বাচন করতে লক্ষ্য
  3. একটি লক্ষ্যতে হিট ctrl/ cmd+ shift+ F10(যদিও এটি কোনও ম্যাকের জন্য আমার পক্ষে কাজ করে না)।

এটি আউটপুট সহ রান টার্গেট নামের একটি ফলকটি খুলবে ।


2
কেবলমাত্র একটি হেডআপ, আপনি যদি এই রুটে যান তবে সেটিংস->> এ যান এবং নিশ্চিত হয়ে নিন যে আপনি প্লাগইনটিকে মেকের ইনস্টল ডিরেক্টরিতে নির্দেশ করেছেন। ডিফল্টরূপে এটি / usr / বিন / মেক দেখায়
টেলর লিস

5
আমি আপনার পদ্ধতিটি চেষ্টা করেছিলাম, তবে এটি কেবল আপনার প্রকল্পটি তৈরির সুযোগ দেয়, তাই না? আমি এই অ্যাপ্লিকেশনটি চালাতে পারছি না যা এই প্লাগইনটি দিয়ে মেক দিয়ে নির্মিত হয়েছিল, বা আমি কিছু মিস করছি? আমার একটি প্রজেক্ট রয়েছে যার বেশ জটিল মেকফিল রয়েছে এবং আমি এর জন্য সিএমকে ফাইল লিখতে চাই না তবে ক্লিয়নটি ব্যবহার করে এটি ডিবাগ করতে চাই ...
ব্ল্যাকটেম্পলার

@ ব্ল্যাকটেম্পলার আমি জানি না যে আপনি ক্লিওন থেকে সমস্ত ডিবাগিং সরঞ্জাম ব্যবহার করতে পারেন, তবে আমার উপরের পদ্ধতিটি দিয়ে তৈরি একটি বাইনারি ফাইল সংকলন এবং ডিবাগ করতে সক্ষম হওয়া উচিত। আমি এটির সাথে কিছুটা খেলেছি এবং আমি উদাহরণস্বরূপ স্টেপ কন্ট্রোল বোতামগুলি ব্যবহার করতে সক্ষম হয়েছি।
21

2
আরও জটিল কনফিগারেশনের জন্য এটি গৃহীত উত্তরের চেয়ে অনেক সহজ। মেকফিল সম্পাদনা করা কেবল সেই মেকফিল চালানোর জন্য পাগলামি!
কেভিন

1
আপনি ক্লিওনে জেনারেটেড বাইনারি কীভাবে চালাবেন? আমি অ্যাপ্লিকেশনটির জন্য একটি নতুন কনফিগারেশন তৈরি করেছি, তারপরে লক্ষ্য: সমস্ত লক্ষ্যমাত্রা, এক্সিকিউটেবল: বাইনারিটির নাম, তবুও আমি এই ত্রুটিটি পেয়েছি: " binary<default>" এ চালানো যায় না
কেনট সলেস্তে

7

সংকলিত মাধ্যমে যেকোন উত্পন্ন মেকফিলের জন্য নতুন সংস্করণটির আক্ষরিক আরও ভাল সমর্থন রয়েছে

তিনটি পদক্ষেপ:

  1. সংকলিত ইনস্টল

    pip install compiledb
    
  2. একটি শুকনো মেক চালান

    compiledb -n make 
    

    (অটোজেন করুন, প্রয়োজনে কনফিগার করুন)

  3. প্রজেক্টটি খুলতে একটি কম্পাইল_কম্যান্ডস.জসন ফাইল তৈরি হবে এবং আপনি দেখতে পাবেন যে ক্লিওন জসন ফাইল থেকে তথ্য লোড করবে। যদি আপনি এখনও আপনার ক্লিওন CMakeLists.txt সন্ধান করার চেষ্টা করেন এবং compile_commands.json পড়তে না পারেন, পুরো ফোল্ডারটি সরিয়ে ফেলার চেষ্টা করুন, উত্স ফাইলগুলি পুনরায় ডাউনলোড করুন এবং 1,2,3 পদক্ষেপটি পুনরায় করুন

অরিগনাল পোস্ট: সংকলন ডিবি ব্যবহার করে ক্লিওনে মেকফাইলগুলির সাথে কাজ করা


1
চমৎকার জেটব্রেইনগুলি সমস্যাটি কাজ করছে, তবে 16 নভেম্বর 2018 এর মতো এটি কার্যকর নয় কারণ আপনি উত্পন্ন এক্সিকিউটেবলকে ডিবাগ করতে পারবেন না।
গেরার্ডডাব্লু

3

CMAKE ব্যবহার সম্পূর্ণরূপে এড়াতে, আপনি কেবল:

  1. টার্মিনালের মাধ্যমে মেক দিয়ে আপনি যেমনটি সাধারনত আপনার প্রকল্পটি তৈরি করুন।

  2. আপনার ক্লায়োন কনফিগারেশন পরিবর্তন করুন, (শীর্ষ বারে) এ যান:
    Run -> Edit Configurations -> yourProjectFolder

  3. Executableমেক দিয়ে তৈরি হওয়াতে পরিবর্তন করুন

  4. Working directoryআপনার এক্সিকিউটেবল ধারণকারী ফোল্ডারে পরিবর্তন করুন (যদি প্রয়োজন হয়)

  5. বাক্সে Buildটাস্কটি সরানBefore launch:Activate tool window

এবং আপনি প্রস্তুত! আপনার ম্যানুয়াল তৈরির পরে আপনি এখন ডিবাগ বোতামটি ব্যবহার করতে পারেন।


1
আমার কনফিগারেশনটি যেমন আপনি বর্ণনা করেছেন তেমন "নির্ধারিত কিছুই সেট করা যায় না" যদিও নির্বাহযোগ্য সেট করা থাকে এবং বিদ্যমান থাকে।
গাধা

সেটা ঠিক. আপনার নিজে তৈরি করা উচিত তারপর চালানো (বিল্ডিং ছাড়াই) without নোট করুন যে ক্লায়নের নতুনতম সংস্করণটি মেকফাইলগুলিকে আরও ভাল সমর্থন করে বলে মনে হচ্ছে। এই সমাধান এখনও কাজ করে, কিন্তু আমি যেমন বিবেচনা করবে অসমর্থিত
13013SwagR

আপনি সর্বশেষ সংস্করণ জন্য কি পরামর্শ করবেন? আমার কাছে মেকফিল প্লাগইন রয়েছে তবে এটি সংকলন / ডিবাগিং পরিচালনা করে না।
গাধা

আপনার সংকলন করতে সক্ষম হওয়া উচিত এবং আমি মেকফিল প্লাগইনটির পাশাপাশি ডিবাগটি অনুমান করছি। দেখুন Clion ডক। । যদিও, আমি আপনাকে সিএমকে ব্যবহার করার পরামর্শ দিচ্ছি যা পুরোপুরি সমর্থিত এবং সমস্ত ঝামেলা এড়িয়ে চলে। আপনি এটি রিমোট ডিবাগ টেম্পলেট দিয়ে সেট আপ করতে পারেন (আমি মনে করি) অথবা আপনি সরাসরি কনসোলে জিডিবি ব্যবহার করেন।
13013 সোয়াআগ্রআর

1

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

আপনাকে সিএমকে ব্যবহার করতে সহায়তা করার জন্য একটি আমদানিকারী সরঞ্জাম প্রয়োগ করা হয়েছে।

সম্পাদনা:

সূত্র: http://blog.jetbrains.com/clion/2014/09/clion-answers-fre ਵਿਰোয় -অ্যাস্কড- জিজ্ঞাসা


এই পোস্টটি এখন এক মাস হয়ে গেছে, এবং এটিই একমাত্র প্রতিক্রিয়া, আমি নিশ্চিত যে আপনি সঠিক, দুর্ভাগ্যক্রমে ...
hlin117

মন্তব্যের উত্সটিতে
hlin117

আপনি যদি cmake ব্যবহার করতে না চান?
এনারসিসিও

1

আমি সিএমকেকের সাথে খুব বেশি পরিচিত নই এবং মন্ডকিনের সমাধানটি সরাসরি ব্যবহার করতে পারিনি।

উইন্ডোজ-এ ক্লিওনের সর্বশেষ সংস্করণ (১.২.৪) এবং মিনজিডাব্লু ব্যবহার করে আমি আমার সিএমকেলিস্ট.টেক্সট এ নিয়ে এসেছি (আমি মনে করি আপনাকে কেবল সমস্ত প্রতিস্থাপন করতে হবে: g ++ mytest.cpp -o বিন / মাইয়েস্ট যদি তৈরি করে থাকেন তবে আপনি একই সেটআপ ব্যবহার করছেন না):

cmake_minimum_required(VERSION 3.3)
project(mytest)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

add_custom_target(mytest ALL COMMAND mingw32-make WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})

এবং কাস্টম মেকফাইলটি এটির মতো (এটি আমার প্রকল্পের মূলের দিকে অবস্থিত এবং একটি বিন ডিরেক্টরিতে এক্সিকিউটেবল জেনারেট করে):

all:
    g++ mytest.cpp -o bin/mytest

আমি কার্যকর করতে সক্ষম এবং লগ উইন্ডোতে ত্রুটিগুলি ক্লিকযোগ্য।

আইডিইতে ইঙ্গিতগুলি বেশ সীমাবদ্ধ যা খাঁটি সিএমকে প্রকল্পগুলির তুলনায় একটি বড় সীমাবদ্ধতা ...


এটি আমার পক্ষে কাজ করেছে। আমি ক্লিওনকে আমার উত্স ফাইলগুলিকে আমার সমস্ততে অন্তর্ভুক্ত করে set(SOURCE_FILES all_files_here.c)এবং তারপরে add_executable(foobar_cmake ${SOURCE_FILES})কাস্টম টার্গেটের সাথে যুক্ত করে "সক্রিয়" হিসাবে চিহ্নিত করতে সক্ষম হয়েছি । তারপরে নিশ্চিত হয়ে নিন যে ক্লিওন আপনার কাস্টম টার্গেটটি তৈরি / চালানোর জন্য সেট করেছে এবং _ক্যামেকটি নয়।
কেভিন মার্ক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.