Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 30/07/2012, à 09:56

Le Barde

Question Make qui pose problème (Makefile.am)

Bonjour,
Je suis en train d'essayer de porter un vieux projet écrit en C avec GTK 1 vers C++ et GTK+ 2 et plus.

Il y avait un makefile qui était le suivant :

CC = gcc
CFLAGS = -Wall -DDATADIR='$(DATADIR)'
OBJS = control.o game.o gfx.o gsoko.o init.o interface.o move.o
DATADIR="."

all:    gsoko

gsoko:  $(OBJS)
        $(CC) $(CFLAGS) -o $@ $(OBJS) `gtk-config --libs`

clean:
        rm -f *.o
        rm -f gsoko

.c.o:
        $(CC) $(CFLAGS) -c `gtk-config --cflags` $<

control.o:      control.c gsoko.h
game.o:         game.c gsoko.h
gfx.o:          gfx.c gsoko.h
gsoko.o:        gsoko.c gsoko.h
init.o:         init.c gsoko.h
interface.o:    interface.c gsoko.h
move.o:         move.c gsoko.h

J'ai déplacé le code vers src/, renommé les .h et .c en hpp et cpp, j'ai utilisé aclocal et automake, ce qui donne le Makefile.am suivant :

## Process this file with automake to produce Makefile.in
AUTOMAKE_OPTIONS = foreign
SUBDIRS = src
DATADIR=src
OBJS = control.o game.o gfx.o gsoko.o init.o interface.o move.o

# what flags you want to pass to the C compiler & linker
CC = g++
CFLAGS = -Wall -DDATADIR='$(DATADIR)' --pedantic -O

bin_PROGRAMS = gsoko

#AM_CXXFLAGS = $(INTI_CFLAGS)

gsoko_SOURCES = src/game.cpp src/gsoko.cpp src/init.cpp src/move.cpp src/control.cpp src/gfx.cpp src/interface.cpp src/gsoko.hpp
#gsoko_LDADD = $(INTI_LIBS)

# the previous manual Makefile
all:	gsoko

gsoko:	$(OBJS)
#	$(CC) $(CFLAGS) -o $@ $(OBJS) `gtk-config --libs`
	$(CC) $(CFLAGS) -o $@ $(OBJS) `pkg-config gtk+-2.0 --libs`

clean:
	rm -f *.o
	rm -f gsoko

objs:
#	$(CC) $(CFLAGS) -c `gtk-config --cflags` $<
	$(CC) $(CFLAGS) -c `pkg-config gtk+-2.0 --libs` $<

control.o:	src/control.cpp src/gsoko.hpp
game.o:		src/game.cpp src/gsoko.hpp
gfx.o:		src/gfx.cpp src/gsoko.hpp
gsoko.o:	src/gsoko.cpp src/gsoko.hpp
init.o:		src/init.cpp src/gsoko.hpp
interface.o:	src/interface.cpp src/gsoko.hpp
move.o:		src/move.cpp src/gsoko.hpp

Lorsque je lance un ./configure puis make, voici ce que me donne make :

(exécution de ./configure ...)
config.status: config.h is unchanged
config.status: executing depfiles commands
(CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/bash /home/adrien/dev/gsoko/missing --run autoheader)
rm -f stamp-h1
touch config.h.in
cd . && /bin/bash ./config.status config.h
config.status: creating config.h
config.status: config.h is unchanged
g++ -Wall -DDATADIR='src' --pedantic -O2 -o gsoko control.o game.o gfx.o gsoko.o init.o interface.o move.o `pkg-config gtk+-2.0 --libs`
g++: error: control.o: Aucun fichier ou dossier de ce type
g++: error: game.o: Aucun fichier ou dossier de ce type
g++: error: gfx.o: Aucun fichier ou dossier de ce type
g++: error: gsoko.o: Aucun fichier ou dossier de ce type
g++: error: init.o: Aucun fichier ou dossier de ce type
g++: error: interface.o: Aucun fichier ou dossier de ce type
g++: error: move.o: Aucun fichier ou dossier de ce type
make: *** [gsoko] Erreur 1

Si vous pouvez voir ce qui pèche dans mon Makefile, je vous en serais extrêmement reconnaissant !

Hors ligne

#2 Le 30/07/2012, à 13:30

pingouinux

Re : Question Make qui pose problème (Makefile.am)

Bonjour,
Je pense que c'est parce qu'il n'y a pas de règle qui permet de générer control.o à partir de src/control.cpp et src/gsoko.hpp. Idem pour les autres *.o.

Hors ligne

#3 Le 11/08/2012, à 12:35

Le Barde

Re : Question Make qui pose problème (Makefile.am)

pingouinux a écrit :

Je pense que c'est parce qu'il n'y a pas de règle qui permet de générer control.o à partir de src/control.cpp et src/gsoko.hpp. Idem pour les autres *.o.

En effet, et c'est ce que me dit make lorsque je tente de compiler. Mais comment modifier le makefile.am pour que ça marche ?

Hors ligne