Also ich benutze Autoconf, um ein Makefile zu generieren, und ich bin erfolgreich dabei und kompilieren mein Projekt, aber das Problem ist, dass die Objektdateien in src
erstellt werden Mappe. Ich möchte, dass sie im Ordner .libs
kompiliert werden.Makefile sollte nach .o-Dateien in einem anderen Verzeichnis suchen
Ich kann das auch tun, aber dann ein anderes Problem auftritt, sucht der Compiler für diese .o
Dateien im selben Ordner wie die Dateien (die src
ist).
Ich habe versucht, alles inklusive:
%.o: $(SDIR)/%.cpp
$(CC) $(CFLAGS) -o $(OBJDIR)/[email protected] -c $<
und
$(OBJDIR)/%.o: %.c
$(CC) -c -o [email protected] $< $(CFLAGS)
und so viele andere Kombinationen, die ich erinnere mich nicht einmal. Aus irgendeinem Grunde, diese Regeln am Ende nicht für die Objektdateien im .libs
Ordner suchen, und ich bekomme Fehler während machen laufen:
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
Das ist mein Makefile.am, so weit:
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)
Sie zeigen uns das 'Makefile.am', aber wo ist das Makefile, das es verwendet, das mit der Regel, um etwas aus diesen Objektdateien zu erstellen? – Beta