মেকফাইল: 4: *** নিখোঁজ বিভাজক। স্টপ


472

এটি আমার মেকফাইল:

all:ll

ll:ll.c   
  gcc  -c  -Wall -Werror -02 c.c ll.c  -o  ll  $@  $<

clean :
  \rm -fr ll

আমি যখন চেষ্টা করি make clean বাmake make এই ত্রুটিটি পাই:

:makefile:4: *** missing separator.  Stop.

আমি কীভাবে এটি ঠিক করতে পারি?


5
আপনি অক্ষর ব্যবহারের ব্যবহার পরিবর্তন করতে .RECIPEPREFIX ব্যবহার করতে পারেন। দেখুন: gnu.org/software/make/manual/html_node/…
aseq

2
এটি কীভাবে নকল হিসাবে বন্ধ হয়নি ??? ভুল ত্রুটি করার
বিচ্ছিন্ন

ম্যাসিডেটে "বিকল্পগুলি -> সাধারণ" শুরুর বিষয়টি নিশ্চিত করুন যে "ফেক অর্ধেক ট্যাবগুলিতে" বিকল্পের আগে বর্গাকার বন্ধনীতে "এক্স" নেই।
জোভান রুইসিয়ার

উত্তর:


989

মেকফিলের ট্যাবগুলির সাথে খুব বোকা সম্পর্ক রয়েছে, প্রতিটি নিয়মের সমস্ত ক্রিয়া ট্যাব দ্বারা চিহ্নিত করা হয়। এবং না, 4 টি স্পেস কোনও ট্যাব তৈরি করে না, কেবল একটি ট্যাব একটি ট্যাব তৈরি করে।

কমান্ডটি ব্যবহার করলাম তা পরীক্ষা করতে cat -e -t -v makefile_name

এটি দেখায় যে ট্যাবগুলির সাথে ট্যাবগুলির উপস্থিতি ^Iএবং $উভয়টির সাথে লাইন সমাপ্তিগুলি নির্ভর করে যাতে নির্ভরতা সঠিকভাবে শেষ হয় এবং ট্যাবগুলি বিধিগুলির জন্য ক্রিয়াকে চিহ্নিত করে যাতে তারা সহজেই ইউটিলিটিটি সনাক্ত করতে পারে।

উদাহরণ:

Kaizen ~/so_test $ cat -e -t -v  mk.t
all:ll$      ## here the $ is end of line ...                   
$
ll:ll.c   $
^Igcc  -c  -Wall -Werror -02 c.c ll.c  -o  ll  $@  $<$ 
## the ^I above means a tab was there before the action part, so this line is ok .
 $
clean :$
   \rm -fr ll$
## see here there is no ^I which means , tab is not present .... 
## in this case you need to open the file again and edit/ensure a tab 
## starts the action part

8
"cat -e -t -v makefile_name" সেরা জিনিস। কখনো। আমি স্ক্রিনটির দিকে তাকিয়ে রইলাম, দেখতে দেখতে কোনও ট্যাবটি কেমন দেখাচ্ছে, পুরোপুরি অনুপস্থিত যে এটি একটি হার্ড লাইনের পরিবর্তে স্পেস ব্যবহার করে এমন পুরো ফাইলটিতে এটিই এক লাইন।
arinmorf

তোমাকে অনেক ধন্যবাদ! আমি বড় প্রকল্পের উত্স কোডটি সংকলন করছি। makefileটিউটোরিয়াল থেকে কিছু লাইন আটকানো হয়েছে , এবং এটি কার্যকর হয়নি। কেবল স্থানগুলি মুছে ফেলার পরে এবং Tabপরিবর্তে কাজ করার পরে!
রাজায়েফ 8'15

Vi (বা vim) সম্পাদক ব্যবহার করে এক মেকফাইল থেকে অন্য মেকফাইল থেকে অনুলিপি / আটকানোর সময় নিশ্চিত হয়ে নিন যে দুর্ঘটনাক্রমে ফাইলটির শেষের নির্দেশক ~ (টিল্ড) লাইনটি ধরবেন না। একটি বাস্তব a একটি vi চিহ্নের মতো দেখায় এবং "*** নিখোঁজ বিভাজককে থামিয়ে দেয় Stop থামিয়ে দিন" " ত্রুটি. এটি সুস্পষ্ট বলে মনে হতে পারে তবে এটি দুর্ঘটনাবশত ঘটে গেলে তা স্পষ্ট নয়। দেখুন আমার ব্লগ ভাষ্য আরও তথ্যের জন্য।
স্কট

3
-vজন্য বিকল্প catকমান্ড এখানে অপ্রয়োজনীয় কারণ -eউপায়ে -vEএবং -tমানে -vT
xxks-kkk

2
এখানে যদি ট্যাব প্রতিস্থাপনকারী এমন কোনও সম্পাদক ব্যবহার করেন তবে এটিকে এখান থেকে অনুলিপি করুন:।
ইভান বোর্সচভ

32

ভিএস কোডে, নীচে কোণায় "স্পেস: 4" ক্লিক করুন এবং আপনার মেকফিল সম্পাদনা করার সময় এটি ট্যাবে পরিবর্তন করুন।


1
আমি সেদিকেও লক্ষ্য করিনি - সেই তথ্যের জন্য ধন্যবাদ। আমি আগে একটি রেজেক্স ফাইন্ড রিপ্লেস ব্যবহার করছিলাম তবে এটি এত সুন্দর।
চিনাবাদাম

ভিএস কোড সনাক্ত করেছে যে আমার 'কমন.এমকে' ফাইলটি 'মেকফিল' নো-প্রত্যয় থেকে প্রাপ্ত, এটি একটি মেক ফাইল ছিল এবং এটি সঠিকভাবে হাইলাইট করেছিল - তবে চুপচাপ ট্যাবগুলির পরিবর্তে স্পেস দিয়ে ইন্ডেন্ট করা শুরু করেছিল।
ফ্রান্সিস নরটন

সাহায্যের জন্য ধন্যবাদ! আমি নীচে কোণে একটি ট্যাব সেটিংস আছে তা অবশ্যই স্পষ্টভাবে লক্ষ্য করিনি।
se_brandon

28

আপনার সবসময় কমান্ড লিখতে হবে Tabসাদা স্থান নয় not

এটি আপনার ক্ষেত্রে gccলাইনে (লাইন # 4) প্রযোজ্য । আপনাকে আগে ট্যাব toোকানো দরকার gcc

\rm -fr llসঙ্গে প্রতিস্থাপন rm -fr ll। এই কমান্ডের আগে ট্যাবগুলি Inোকান।


3
খুব স্পষ্টভাবে বলতে গেলে, প্রতিটি লজিকাল রেসিপি লাইনে প্রথম অক্ষর হিসাবে একটি শক্ত TAB অক্ষর থাকতে হবে। টিএবির পরে, আপনি যে কোনও ধরণের সাদা স্পেস যোগ করতে পারেন।
ম্যাড সায়েন্টিস্ট

ট্যাবস্পেসটি 2 বা 4 এর সমান হওয়া উচিত? ইন /.vimrc ট্যাবস্টপ = 2 বা 4 সেট করে?
রাহুল রেড্ডি

@ রাহুলরেডি কনফিগারেশনে কোনও ট্যাব অক্ষর রয়েছে কিনা তা কোনও সম্পাদক কোনও ট্যাব প্রদর্শন করে তার সাথে কোনও সম্পর্ক নেই @
xaxxon

দুর্দান্ত টিপ, কারণ আমার সামনে ফাঁকা জায়গা ছিল। আমি যখন এটি পরীক্ষা করেছিলাম। দুর্দান্ত :)
indianwebdevil

9

এর সমাধান PyCharmহ'ল একটি Makefile supportপ্লাগইন ইনস্টল করা :

  1. খোলা Preferences(cmd + , )
  2. যাও Plugins-> এMarketplace
  3. Makefile supportআইডিই অনুসন্ধান করুন , ইনস্টল করুন এবং পুনরায় চালু করুন।

এটি সমস্যার সমাধান করতে হবে এবং একটি মেকফিলের জন্য একটি সিনট্যাক্স সরবরাহ করবে।


এটি GoLand
ভিজেরেই

আমি আইডিই বাস্তব বিষয় খুঁজে। ট্যাব সংস্করণ পিচার্মে সমর্থিত নয়। আমি যখন এটিএম এ পরিবর্তন করি তখন ট্যাব ইনপুট কাজ করে।
মুনলাইট নাইট

6

এটি বেশ পুরানো প্রশ্ন তবে তবুও আমি vi/vimট্যাবগুলি ভিজ্যুয়ালাইজ করার জন্য সম্পাদক ব্যবহার করে আরও একটি বিকল্প সম্পর্কে বলতে চাই । আপনি যদি vi/vimইনস্টল করে থাকেন তবে একটি Makefile(উদাঃ vim Makefile) খুলুন এবং প্রবেশ করুন :set list। এটি নীচের মতো সন্নিবেশ করা ট্যাবগুলির সংখ্যা দেখায়,

 %-linux: force$
^I@if [ "$(GCC_VERSION)" = "2.96" ] ; then \$
^I^Iecho ===== Generating build tree for legacy $@ architecture =====; \$
^I^I$(CONFIGURE) $(CWD) $@ legacy; \$
^Ielse \$
^I^Iecho ===== Generating build tree for $@ architecture =====; \$
^I^I$(CONFIGURE) $(CWD) $@; \$
^Ifi$
^Icd build-$@;make$


4

মূল বিষয়টি ছিল "হার্ড ট্যাব" ১। আপনি হোয়াইট স্পেসের পরিবর্তে ট্যাব ব্যবহার করেছেন কিনা তা পরীক্ষা করে দেখুন। "সেট ট্যাবস্টপ = এক্স" এর জন্য আপনার .vimrc পরীক্ষা করুন Check


2

আপনার কেউ যদি ইন্টেলিজ থেকে কোনও পণ্য ব্যবহার করে থাকেন তবে এর জন্য সমাধানটি নিম্নলিখিত:

  1. পছন্দ> সম্পাদক> কোড স্টাইল এ যান
  2. এখানে আপনার সমস্যার সাথে সম্পর্কিত ফাইলের প্রকারটি নির্বাচন করতে হবে। তবে সম্ভবত আপনাকে নির্বাচন করা দরকার Other File Types
  3. ট্যাবে খোলার জন্য চেকবাক্সটি চিহ্নিত করুন Use tab characterএবং সতর্ক হন, Tab sizeএবং Indentমানগুলি 4 হতে হবে।

2

আপনি যদি মেকফিল সম্পাদনার জন্য ম্যাসিডিট ব্যবহার করছেন। আপনাকে নিম্নলিখিত চিহ্নটি দেখতে হবে। এখানে চিত্র বর্ণনা লিখুন


0

এটি হ'ল ট্যাবটি স্পেস দ্বারা প্রতিস্থাপন করা হয়েছে। এই বৈশিষ্ট্যটি অক্ষম করতে এখানে যান

gedit-> edit-> preferences-> সম্পাদক

এবং চেক অপসারণ

" স্থান দিয়ে ট্যাব প্রতিস্থাপন "

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