Comment vérifier si un fichier existe dans un makefile
J'ai un makefile modèle de compiler une DLL unique (pour un système de plugin).
Le makefile de l'utilisateur ressemble à ceci:
EXTRA_SRCS=file1 file2
include makefile.in
Dans le makefile.in
j'ai:
plugin.dll: plugin.os $(patsubst %,%.os,$(EXTRA_SRCS))
Où plugin.os
est le principal C++ fichier à compiler. Btw, les fichiers se terminant est .os
sont l'objet les fichiers compilés pour la bibliothèque partagée (c'est à dire à l'aide de la -fpic
option avec gcc
)
Maintenant, le problème est que le supplément de sources sera probablement (mais pas nécessairement) fichiers d'en-tête. Idéalement, je voudrais ajouter que les dépendances de la cible plugin.os
et la file.cpp
mais seulement si elles existent.
La méthode devrait fonctionner à la fois sous windows et linux, ou au moins être adaptable à chacun. Cependant, je n'utilise que la version GNU de faire.
source d'informationauteur PierreBdR
Vous devez vous connecter pour publier un commentaire.
Utiliser le "générique" de la fonction:
EDIT: afin de correspondre à une liste spécifique, ne
Il n'est pas nécessaire d'utiliser $(filtre ...), le caractère générique de la fonction de filtre automatiquement les fichiers qui n'existent pas.
Vous ne spécifiez pas ce compilateur(s) que vous utilisez, mais si vous avez accès à gcc/g++, vous pouvez utiliser le MM option.
Ce que j'ai à faire est de créer un fichier avec l'extension .d pour tous .c ou .fichier cpp, et puis "inclure" la .d fichiers. J'utilise quelque chose comme ça dans mon Makefile:
J'ai ensuite créer les dépendances comme ceci:
et ceci au bas de l'Makefile:
Est-ce le genre de comportement que vous allez? La beauté de cette méthode est que, même si vous êtes en utilisant un non-compilateur GNU pour les compilations, les compilateurs GNU faire un bon travail de calcul des dépendances.
Le simple
faire ce que vous voulez?