L'erreur que vous rencontrez:
*** séparateur manquant (vouliez-vous dire TAB au lieu de 8 espaces?). Arrêtez.
Signifie que le makefile
contient des espaces au lieu de Tab. L' make
utilitaire est notoirement difficile à utiliser Spaceau lieu de Tab. Il est donc probable que le makefile
contient Spaceau début des strophes de règles dans le fichier.
Exemple
Disons que j'ai les 3 .c
fichiers suivants:
Bonjour c
char *
hello()
{
return "Hello";
}
world.c
char *
world()
{
return "world";
}
main.c :
#include <stdio.h>
/* Prototypes. */
char *hello();
char *world();
int
main(int argc, char *argv[])
{
printf("%s, %s!\n", hello(), world());
return 0;
}
Dites que j'ai ce qui suit Makefile
:
# The executable 'helloworld' depends on all 3 object files
helloworld: main.o hello.o world.o
cc -o helloworld main.o hello.o world.o # Line starts with TAB!
# Build main.o (only requires main.c to exist)
main.o: main.c
cc -c main.c # Line starts with TAB!
# Build hello.o (only requires hello.c to exist)
hello.o: hello.c
cc -c hello.c # Line starts with TAB!
# Build world.o (only requires world.c to exist)
world.o: world.c
cc -c world.c # Line starts with TAB!
# Remove object files, executables (UNIX/Windows), Emacs backup files,
#+ and core files
clean:
rm -rf *.o helloworld *~ *.core core # Line starts with TAB!
Maintenant, nous essayons de construire une cible
Quand je l'exécute contre la cible helloworld
:
$ make helloworld
makefile:3: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.
Semble familier?
Résoudre le problème
Vous pouvez résoudre ce problème en modifiant les caractères Spacesréels Tab. J'avais l'habitude vim
de réparer mon dossier. Ouvrez-le simplement:
$ vim makefile
Et puis exécutez cette commande dans:
:%s/^[ ]\+/^I/
REMARQUE: ^I
est un caractère spécial. La frappe ^suivie de Isera interprétée différemment de Ctrl+ V- Ctrl+ I.
Cela remplacera toutes les lignes commençant par 1 ou plus Spacespar un réel Tab.
Maintenant, quand je réexécute ma helloworld
cible:
$ make helloworld
cc -c main.c # Line starts with TAB!
cc -c hello.c # Line starts with TAB!
cc -c world.c # Line starts with TAB!
cc -o helloworld main.o hello.o world.o # Line starts with TAB!
Références