Bonjour,
Pour archiver la partie programmes d'une arborescence contenant des exemples de programmes C++, j'utilise une commande tar un peu tarabiscotée :
tar cf ../documents_cours.tar --exclude "modele*" C_Cpp/Sources/{*.[hc]pp,Makefile} Objets/Sources/{*.[hc]pp,Makefile} Polymorphisme/Sources/{*.[hc]pp,Makefile}
Elle fonctionne parfaitement en ligne de commande bash.
Comme est elle est compliquée, je souhaite l'intégrer dans le Makefile qui me sert par ailleurs à gérer les exemples.
J'ai donc écrit une cible :
archive:
tar cf ../documents_cours.tar --exclude "modele*" C_Cpp/Sources/{*.[hc]pp,Makefile} Objets/Sources/{*.[hc]pp,Makefile} Polymorphisme/Sources/{*.[hc]pp,Makefile}
_$ make archive
me répond :
tar cf ../documents_cours.tar --exclude "modele*" C_Cpp/Sources/{*.[hc]pp,Makefile} Objets/Sources/{*.[hc]pp,Makefile} Polymorphisme/Sources/{*.[hc]pp,Makefile}
tar: C_Cpp/Sources/{*.[hc]pp,Makefile} : stat impossible: Aucun fichier ou dossier de ce type
tar: Objets/Sources/{*.[hc]pp,Makefile} : stat impossible: Aucun fichier ou dossier de ce type
tar: Polymorphisme/Sources/{*.[hc]pp,Makefile} : stat impossible: Aucun fichier ou dossier de ce type
tar: Arrêt avec code d'échec à cause des erreurs précédentes
Je ne comprends pas pourquoi.
Quelqu'un aurait une suggestion ?
Cordialement
Dominique
# Bash vs POSIX
Posté par Matthieu Moy (site web personnel) . Évalué à 9.
La syntaxe
{...,...}
est un bashisme non-POSIX. Visiblement, chez toi make n'utilise pas bash (du point de vue du Makefile, une action n'est qu'une chaîne de caractère, c'est un shell qui s'occupe de la découper proprement selon les espaces, et d'expanser les noms de fichiers comme*.ext
et ton{...,...}
).Quelque chose comme
en début de Makefile devrait régler ça.
[^] # Re: Bash vs POSIX (make et tar)
Posté par domiko . Évalué à 4.
Bonjour,
Inutile d'employer le conditionnel : je viens d'essayer et cela fonctionne parfaitement.
Grand merci.
Je crois même tenir l'explication à d'autres "défaillances" de make :-)
Cordialement
Dominique
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.