Utiliser les makefiles est nouveau pour moi. Mes premiers tests avec l'approche la plus simple ont très bien fonctionné jusqu'à présent. Mais maintenant, je me suis retrouvé en train d'écrire un fichier Make qui crée un fichier exécutable et une bibliothèque partagée. Comme je l'ai dit, je suis nouveau dans les makefiles. Voici mon approche simple:
exe.a: main.c func.c
gcc main.c func.c -o exe.a
lib.so: func.c
gcc func.c -o lib.so -fPIC -shared
Lorsque le fichier makefile est exécuté, seul l'exécutable sera compilé. Est-il même possible de créer deux objets avec un makefile? Quelle est la meilleure approche pour créer ces fichiers?
Par défaut, make
construira uniquement la première cible dans un fichier Makefile qui est exe.a
dans votre cas. Vous pouvez indiquer à make
de créer une autre cible:
make lib.so
ou les deux cibles:
make lib.so exe.a
ou (préféré) introduisez un nouveau première cible qui est généralement nommé all
name__:
all: exe.a lib.so
exe.a: main.c func.c
gcc main.c func.c -o exe.a
lib.so: func.c
gcc func.c -o lib.so -fPIC -shared
Désormais, un simple make
construira la (pseudo-) cible all
qui dépend à son tour de exe.a
et de lib.so
, de sorte qu'ils sont générés en premier. Notez que vous ne devez pas, dans ce cas, avoir un fichier appelé all
car dans ce cas, make
devient confus.