2009-03-05 4 views
0

J'ai parfois ressenti que si un caractère spécial/de contrôle ($,^M, ou quelque chose d'autre) entrait dans un makefile, alors si vous essayez de faire -f Makefile en utilisant ce fichier makefile cela donne des erreurs.Pourquoi certains caractères spéciaux/contrôles dans un fichier make sur * nix donnent parfois des erreurs lors de make?

Je veux savoir,

1.) Quelqu'un at-il vécu quelque chose comme ça, et si oui, quelles sont les causes de ces erreurs? Qu'y a-t-il de particulier dans ces caractères spéciaux?

+0

Je ne vois pas quelle serait une réponse satisfaisante, et donc je ne pense pas que ce soit une vraie question. Extrêmement vague, et la réponse est quelque chose comme "parce que c'est ce qui fait". –

+0

@goldenmean: les appels personnalisés locaux pour laisser la formule de réservation en mémoire pour économiser de l'espace sur la première page, et votre paternité est automatiquement affichée, de sorte que la signature est également inutile. – dmckee

Répondre

1

UNIX est traditionnellement peu tolérant pour les programmes. Cette attitude n'a pas beaucoup changé depuis sa création. ^M est le retour de chariot qui généralement n'obtient dans les fichiers lors de leur modification dans les environnements Windows. UNIX utilise le saut de ligne (\ n, 0x0a) comme terminateur de ligne et de nombreux outils se plaignent de CR (\ r, 0x0d) car ils ne voient pas pourquoi ce caractère devrait même exister.

$ sont un problème différent, car $ fait partie de la syntaxe de makefile. Il est utilisé pour indiquer les variables/constantes dans les fichiers makefile. Ceux-ci peuvent être contextuels, comme $< ou $*, ou des noms comme $(CC).

Vous pouvez utiliser l'utilitaire dos2unix pour se débarrasser de ^M et d'échapper à des signes dollar avec \$.

Il y a plus de particularités à faire, néanmoins. Par exemple l'exigence que les lignes de commande pour les cibles doivent être indentées par un caractère de tabulation. Pour autant que je sache, seuls les make peu utilisés ont levé cette restriction.

+0

@Johannes Rossel: Est-ce que ces exigences particulières pour un formatage de texte makefile soient expliquées dans l'homme Make ou info make ou quelque autre aide. – goldenmean

+0

Ceux qui devraient normalement être documentés, oui. Mais la plupart des gens qui écrivent des fichiers makefile le savent de toute façon :) – Joey

Questions connexes