2010-10-18 10 views
7

J'écris un programme C en utilisant gcc dans cygwin. Ma question est, comment créez-vous un makefile? Je veux dire, quelle est l'extension de fichier? Je sais comment écrire des règles simples, mais je ne peux pas enregistrer un fichier dans l'éditeur de texte avec la bonne extension? Impossible de trouver des informations à ce sujet ... Ceci est une question super-newbie. Alors que le flamboiement commence. :-Pextension makefile

+0

Utilisez l'extension de fichier que vous voulez. Par exemple, appelez-le 'makefile', ou vous pourriez l'appeler' makefile.mytotallyawesomemakefiletypeoffile' – JoshD

+0

Bien sur une machine Linux il n'a généralement pas d'extension du tout - c'est juste "makefile" ou "Makefile". Vous pouvez l'appeler comme vous voulez et utiliser l'option '-f' pour dire" make "à utiliser. – Pointy

Répondre

1

Ils sont généralement nommés Makefile ou makefile. Pas d'extension C'est juste une convention, cependant.

Ce n'est pas trivial d'écrire un makefile, consulter un guide ou tutoriel =)

0

Ouvrez votre éditeur de texte favori et créer un fichier nommé Makefile.

contenu peut varier, mais, à condition que vous avez un programme appelé hello.c très, très simple Makefile de le compiler pourrait être:

hello: hello.c 
    gcc -Wall hello.c -o hello.exe 

Après que vous exécutez fuyez shell cygwin:

$ ls 
hello.c Makefile 
$ make 
.... 

Et votre Makefile va essayer de compiler hello.c. Si tout se passe comme prévu, vous pouvez exécuter le programme hello.exe en exécutant la commande shell suivante:

$ ./hello.exe 

Voici un tutoriel bien sur Makefiles.

0

Un fichier makefile est généralement appelé simplement Makefile.

8

Le nom de fichier par défaut pour un fichier Make est Makefile; C'est le nom que GNU Make recherche lorsque vous l'exécutez sans aucune option. L'argument -f vous permet de spécifier un autre nom de fichier si vous le souhaitez.

+6

En fait, les noms que GNU fait chercher sont spécifiés [dans le manuel] (http://www.gnu.org/software/make/manual/make.html#Makefile-Names): "il essaie les noms suivants, dans l'ordre : GNUmakefile, makefile et Makefile ". – bstpierre

+0

Assez juste. Mais la plupart des gens qui écrivent des fichiers makefiles utilisent ce nom. –

11

Comme vous utilisez Cygwin ce qui signifie que vous utilisez GNU make, je cite le relevant portion of the GNU make manual:

3,2 Quoi Nom donner à votre Makefile

par défaut, lorsque make recherche le makefile, il essaie les noms suivants, dans l'ordre: GNUmakefile, makefile et Makefile. Normalement, vous devriez appeler votre makefile makefile ou Makefile. (Nous vous recommandons Makefile car il apparaît en bonne place près le début d'une liste de répertoires, à proximité d'autres droit des fichiers importants tels que README.) Le premier nom coché, GNUmakefile, n'est pas recommandé pour la plupart makefile. Vous devriez utiliser ce nom si vous avez un makefile qui est spécifique à GNU make, et ne sera pas compris par les autres versions de make. D'autres programmes make recherchent makefile et Makefile, mais pas GNUmakefile.

[...]

Si vous souhaitez utiliser un nom non standard pour votre makefile, vous pouvez spécifier le nom de makefile avec le « -f » ou option « --file ». Les arguments '-f name' ou '--file = name' disent de faire lire le nom de fichier en tant que fichier makefile. Si vous utilisez plusieurs options '-f' ou '--file', vous pouvez spécifier plusieurs fichiers makefiles . Tous les makefiles sont effectivement concaténés dans l'ordre spécifié. Les noms de fichier makefile par défaut GNUmakefile, makefile et Makefile ne sont pas vérifiés automatiquement si vous spécifiez '-f' ou '--file'.

0

Les Makefiles n'ont généralement pas d'extension. Ils sont généralement appelés 'makefile' ou 'Makefile'. Parfois, lorsque quelqu'un écrit un ensemble complexe de fichiers make qui se comprennent, les fichiers inclus obtiennent une extension .mak pour indiquer qu'ils sont des fichiers makefile même s'ils ne sont pas appelés 'makefile'.

1

Dans les rares endroits où j'ai vu des extensions utilisées sur les noms de makefile, ils ont généralement été soit .make ou .gmk, et même alors, ces extensions sont généralement réservées aux makefile fragments qui sont inclus par les fichiers maîtres donnés l'un des noms par défaut.