Bir Makefile oluşturmak için autoconf kullanıyorum ve bunu yaparken ve projemi derlemede başarılı oldum, ancak sorun nesne dosyalarının src
içinde oluşturulduğu Klasör. Bunların .libs
klasöründe derlenmesini istiyorum.Makefile .o dosyalarını başka bir dizinde aramalı
bunun da yapabilir, ama sonra başka sorun (src
olan), .cpp
dosyaları aynı klasöre bu .o
dosyalar için derleyici aramalar doğar. dahil
denedim her şey:
%.o: $(SDIR)/%.cpp
$(CC) $(CFLAGS) -o $(OBJDIR)/[email protected] -c $<
ve
$(OBJDIR)/%.o: %.c
$(CC) -c -o [email protected] $< $(CFLAGS)
ve hatta hatırlamıyorum pek çok başka kombinasyonlar
. Şimdiye kadar,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
Bu benim Makefile.am geçerli:: yapmak çalışırken Nedense , bu kurallar .libs
klasörde nesne dosyaları için görsterme yoktur ve ben hataları olsun
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)
Bize "Makefile.am" 'ı gösterirsiniz, ama bunu kullanan makefile nerede, aslında bu nesne dosyalarından bir şeyler oluşturma kuralı olan? – Beta