Bonjour à tous.
J'ai un makefile me permettant de crééer des bibliothèques partagées (.so).
Pour me faciliter la vie, j'ai ces directives dans le makefile :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
SRC_PLUGINS=$(wildcard $(SRC_DIR)/plugins/*.cpp)
OBJ_PLUGINS=$(SRC_PLUGINS:.cpp=.o)
SOBJ_PLUGINS=$(SRC_PLUGINS:.cpp=.so)
Mon makefile va donc chercher tous les .cpp de mon dossiers sources "plugins" et je genere ensuite les variables OBJ_PLUGINS et SOBJ_PLUGINS.

Ensuite dans le makefile, j'ai ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
shared_libs: libs $(SOBJ_PLUGINS) 
%.so: %.o
	$(CPP) -shared -o $@ $(OBJ) $(OBJ_PLUGINS) 
 
libs: $(OBJ_PLUGINS) 
%.o: %.c
	$(CPP) -o $@ -c $< $(CXXFLAGS)
Pour compiler les .so, je compile donc d'abord le .o. Ensuite je compile chaque .so avec tous les .o pour une seule raison : certains .so peuvent avoir pesoins des autres pour appeller certaines fonctions.
Au début ca allait, mais au fur et a mesure que mon projet avance, mes .so deviennent evidemment énormes (quasiement 1mo).
Je voudrais donc revenir en arriere, mais garder le principe du wildcard. Je voudrais donc que mes .so ne soit compilés qu'a partir de leur .o correspondant (ca ca va), mais que pour certaines, lorsque c'est nécessaire, je puiss écrire une regle différente précisent les autres .o nécessaires.

Pourriez vous me dire comment je peux préciser cela dans un makefile (une instruction pour une liste de .cpp, et une instruction différente pour certains de ces cpp).

Merci par avance.

eponyme