Make: отсутствует ошибка разделителя, несмотря на использование вкладки
Это сводит меня с ума, это мой буквально скопированный код, Gedit использует ширину табуляции 8. Он все еще жалуется на отсутствующий разделитель. Я точно следовал синтаксису вручную. Я не использовал какую-то настройку, которая автоматически превращает вкладки в пробелы.
Tubes : TubesWithVaryingRadiusAndColors.cxx
gcc -c TubesWithVaryingRadiusAndColors.cxx
В приведенном выше коде кажется, что вкладка изменяется на 4 пробела (я вижу, что, пытаясь выделить ее, в окне ввода текста это один символ, но если вы проверите его, это будет 4 пробела).
Редактировать:
если я использую leafpad, это работает. Что Гедит делает неправильно?
Hexdump это:
0000000 494c 4442 5249 3d20 2f20 7375 2f72 696c
0000010 2f62 7476 2d6b 2e35 2f38 540a 6275 7365
0000020 3a20 5420 6275 7365 6957 6874 6156 7972
0000030 6e69 5267 6461 7569 4173 646e 6f43 6f6c
0000040 7372 632e 7878 090a 6367 2063 632d 5420
0000050 6275 7365 6957 6874 6156 7972 6e69 5267
0000060 6461 7569 4173 646e 6f43 6f6c 7372 632e
0000070 7878 2d20 2049 7b24 494c 4442 5249 007d
000007f
2 ответа
Открыть свой gedit
Редактор предпочтений т.е. Edit->Preferences->Editor
, снимите флажок Insert spaces instead of tabs
,
Попробуйте вставить символ табуляции снова в Makefile
и на этот раз это должно сработать.
Кстати, ширина табуляции из 8 пробелов не эквивалентна hard-tab
, Gedit
кажется, автоматически заменяет символ табуляции на 8 spaces
но Makefile
ожидает, что символ табуляции будет присутствовать в начале каждого recipe
для правила.
Если вы использовали редактор, как vim
он автоматически позаботится о вставке жестких вкладок для указания правил, и вы можете вручную вставить вкладку, используя Ctrl-V-Tab
Попробуйте запустить hexdump
на ваше Makefile
, Тогда вы будете абсолютно уверены в том, как на самом деле закодирована вкладка.