Donc j'utilise autoconf pour générer un Makefile, et j'ai réussi à le faire et à compiler mon projet, mais le problème est que les fichiers objets sont créés dans le src
dossier. Je veux qu'ils soient compilés dans le dossier .libs
.Makefile doit chercher les fichiers .o dans un autre répertoire
je suis capable de faire aussi bien, mais un autre problème se pose, les recherches du compilateur pour ces .o
fichiers dans le même dossier que les fichiers .cpp
(qui est src
).
J'ai tout essayé, y compris:
%.o: $(SDIR)/%.cpp
$(CC) $(CFLAGS) -o $(OBJDIR)/[email protected] -c $<
et
$(OBJDIR)/%.o: %.c
$(CC) -c -o [email protected] $< $(CFLAGS)
et tant d'autres combinaisons que je ne souviens même pas. Pour une raison quelconque, ces règles ne finissent pas chercher les fichiers d'objet dans le dossier .libs
, et je reçois des erreurs lors de l'exécution faire:
g++: error: One.o: No such file or directory
g++: error: Two.o: No such file or directory
g++: error: Three.o: No such file or directory
g++: error: Four.o: No such file or directory
Ceci est mon Makefile.am, jusqu'à présent:
CFLAGS=-Wall -I/chome/siddhs/soft/soft_source_code/target/src/include/ -I/home/siddhs/EclipseProjects/rdma2/include
AM_LDFLAGS=-L /usr/pbs/new/exec/lib/ -lsoft -lpthread -llmx-altair -L /usr/lib/x86_64-linux-gnu/ -lcrypto -L . -lsoft
OUT=rdma2.a
CC=g++
OBJDIR=/home/siddhs/EclipseProjects/rdma2/.libs
SDIR=/home/siddhs/EclipseProjects/rdma2/src
INC=-Iinc
ADIR=/usr/local/rdma2/
bin_PROGRAMS=rdma2test
rdma2test_SOURCES = One.cpp Two.cpp Three.cpp Four.cpp
rdma2test_LDADD=-L /usr/soft/new/exec/lib -lsoft -lpthread -L /usr/lib/x86_64-linux-gnu/ -lcrypto
_OBJS = One.o Two.o Three.o Four.o
%.o: $(SDIR)/%.cpp
$(CC) $(CFLAGS) -o $(OBJDIR)/[email protected] -c $<
$(OBJDIR)/%.o: %.c
$(CC) -c -o [email protected] $< $(CFLAGS)
Vous nous montrer la 'Makefile.am', mais où est le makefile qui l'utilise, celui avec la règle pour la construction en fait quelque chose de ces fichiers objet? – Beta