Hum, le Makefile est très très bizarre. Il y a tellement à dire, mais surtout...il mérite pas mal de nettoyage :
1)
aasynthe: aasynthe.c
$(LD) -o $@ $(LDFLAGS) $^
adnlicorne: adnlicorne.c
$(LD) -o $@ $(LDFLAGS) $^
adnmariage: adnmariage.c
$(LD) -o $@ $(LDFLAGS) $^
adnmarteau: adnmarteau.c
$(LD) -o $@ $(LDFLAGS) $^
adnnetoie: adnnetoie.c
$(LD) -o $@ $(LDFLAGS) $^
adnvinaigrette: adnvinaigrette.c
$(LD) -o $@ $(LDFLAGS) $^
joa-a-jo: joa-a-jo.c
$(LD) -o $@ $(LDFLAGS) $^
synthemix: synthemix.c
$(LD) -o $@ $(LDFLAGS) $^
synthqt: synthqt.c
$(LD) -o $@ $(LDFLAGS) $^
adnvinaigrettelongue: adnvinaigrettelongue.c
$(LD) -o $@ $(LDFLAGS) $^
Cette partie est totalement inutilisée, pourquoi la laisser ? D'autant plus qu'elle est fausse :
- la variable LD est définie nulle part
- Le point d'entrée de ld n'est pas un .c mais un .o
2)
QMAKE ?= /usr/local/qt/bin/qmake
...
$(EXEC):
@(cd $(lm3jo_DIR) && qmake && $(MAKE))
une variable QMAKE a été définie, et pourtant c'est qmake en dur qui est utilisé..dommage.
Alors qu'au contraire, MAKE n'a pas été définie, et est utilisé.
3)
# les fichiers sources
CFILES=$(wildcard *.c lm3jo/*.c)
CXXFILES=$(wildcard *.cpp lm3jo/*.cpp)
# les objets générés
OBJECTS=$(CFILES:%.c=%.o) $(CXXFILES:%.cpp:%.o)
Ces variables ne sont pas utilisées à leur juste valeur ! Juste dans le clean.
Puis, pourquoi mettre le dossier lm3jo dans le lot des sources à généré, si le qmake / make du point 2 doit s'en occuper ? c'est très redondant.
Moi j'aurais fait
# les fichiers sources
CFILES=$(wildcard *.c)
# les objets générés
OBJECTS=$(CFILES:%.c=%.o)
#du coup la ligne all peut devenir :
all: $(OBJECTS)
...
4)
all: aasynthe.o adnlicorne.o adnmariage.o adnmarteau.o adnnetoie.o adnvinaigrette.o joa-a-jo.o synthemix.o synthevocal.o adnvinaigrettelongue.o synthqt.o $(EXEC)
gcc aasynthe.o -o aasynthe
gcc adnlicorne.o -o adnlicorne
gcc adnmariage.o -o adnmariage
gcc adnmarteau.o -o adnmarteau
gcc adnnetoie.o -o adnnetoie
gcc adnvinaigrette.o -o adnvinaigrette
gcc joa-a-jo.o -o joa-a-jo
gcc synthemix.o -o synthemix
gcc synthevocal.o -o synthevocal
gcc synthqt.o -o synthqt
gcc adnvinaigrettelongue.o -o adnvinaigrettelongue
Tellement de choses générées en une ligne... en général on préfère (enfin je, mais bon) avoir soit une règle par élément généré ; soit un Makefile par binaire à générer (avec un dossier pour chacun), et un Makefile qui sert de chef-d'orchestre, ordonnançant leur génération et installation.
Mais là, vu que c'est un .c par binaire généré...ça ferait vachement lourd pour pas grand chose.
Après, je trouve que ça fait beaucoup de binaire à générer d'un coup, c'est normal ? Mais bon, ça c'est purement philosophique.
Il y a encore des choses à dire, mais je pense que c'est déjà un bon début de revoir ça, et d'avoir un Makefile un peu plus propre.
Et sous fedora, qmake correspond à qt3 et qmake-qt4 à qt4.