#1 Le 30/07/2012, à 08: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, à 12: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, à 11:35
- Le Barde
Re : Question Make qui pose problème (Makefile.am)
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