gnu make: Comment la concaténation de deux chaînes de caractères
Compte tenu de la ligne:
program_OBJS := ${program_SRCS:.cpp=.o}
Je voudrais ajouter .o
à chaque nom de fichier au lieu de le remplacer .cpp
avec .o
.
Comment dois-je faire?
OriginalL'auteur Robert S. Barnes | 2010-06-21
Vous devez vous connecter pour publier un commentaire.
À juste ajouter quelque chose à une liste de valeurs séparées par des espaces articles que vous pouvez utiliser:
À utiliser la méthode de substitution (comme vous le montrez dans votre question):
mais pour que la liste doit contenir les .rpc suffit, ou la substitution ne se produit pas.
J'ai pensé
$(foreach)
littéralement consacré le troisième argument et concaténés les résultats. Je viens de testé et il ajoute automatiquement un espace si omis, de sorte qu'il n'est pas nécessaire. (Je vais supprimer la note de ma réponse et de mettre à jour ma propre Makefiles... 😉 )OriginalL'auteur Veger
GNU make a addsuffix fonction
Juste GNU make. Si vous voulez rester portable avec votre Makefiles, le meilleur pari est d'écrire POSIX makefiles, comme indiqué ici: pubs.opengroup.org/onlinepubs/009695399/utilities/make.html
OriginalL'auteur Basilevs
Plus courte alternative, à l'aide d'un modèle de substitution:
program_OBJS := ${program_SRCS:%=%.o}
OriginalL'auteur slowdog
D'une façon de plus de travail quelle que soit l'extension:
${program_SRCS:=.o}
OriginalL'auteur Pavel Tumanov
Comment à ce sujet:
Obviuosly, vous pouvez enregistrer le résultat dans une nouvelle variable.
OriginalL'auteur PoVa
Juste une supposition
program_OBJS := ${program_SRCS:.cpp=.cpp.o}
OriginalL'auteur ur.