J'ai récemment acheté un Macbook Pro et je veux faire du codage en C avec le terminal.
Je peux compiler le code avec cette commande:
gcc filename.c –o filename
Mais je veux le compiler avec la commande make car je sais que c'est la meilleure pratique et je veux suivre la meilleure pratique.
make filename cc filename.c -o filename
Cette commande me donne la sortie suivante:
make: Nothing to be done for `ex01'.
make: *** No rule to make target `cc'. Stop.
Notez que j'ai installé les outils de ligne de commande du développeur Xcode et Xcode et dans le dossier / usr/bin je vois les propriétés make et makefile.
Quelqu'un at-il une idée de ce que je dois faire pour pouvoir compiler avec makefile et l'argument cc?
Créez un fichier appelé Makefile
sur le même chemin avec ce contenu:
CC = cc
CFLAGS = -std=c99 -pedantic -Wall
OBJECTS = filename.o
all: appname
filename.o: filename.c
$(CC) $(CFLAGS) -c filename.c
appname: $(OBJECTS)
$(CC) $(OBJECTS) -o appname
clean:
rm -f *.o appname
Exécutez ensuite:
make
Bien sûr, remplacez appname
par le nom de votre programme
Remarque: Il doit y avoir un "tab" (pas d'espaces) avant
$(CC) $(CFLAGS) -c filename.c
et
$(CC) $(OBJECTS) -o appname
Je suivais le même tutoriel , et j'ai rencontré un problème similaire.
Je ne sais pas exactement ce que vous avez fait, mais je pense que l'erreur exécutait la mauvaise commande. Vous avez tapé make filename cc filename.c -o filename
, mais le didacticiel nous a demandé d'utiliser make filename
, sans le cc filename.c -o filename
partie. Peut-être avez-vous lu une ancienne version?
Et, make filename
fonctionne très bien, Vous n'avez pas besoin d'un Makefile .
Pour info, voici comment j'ai rencontré le problème et comment je l'ai résolu:
a tapé le code ci-dessous et l'a enregistré dans un fichier nommé "ex1"
int main(int argc, char *argv[])
{
puts("Hello world.");
return 0;
}
make ex1
dans le terminalmake: Nothing to be done for 'ex1'.
Comme vous pouvez le voir, mon erreur était que le nom de fichier du code source devrait être ex1.c , PAS ex1 .
Et comme je change le nom du fichier en ex1.c, et exécuté make ex1
, ça a marché.