我有多个cpp文件。我有一个make file作为编译的makefile,但是当我把所有的都做了之后,它就没有什么可做的了

CC=g++
PWD=`pwd`
ARCH=$(shell uname -s)
CFLAGS=-Wall -g -fPIC

LIBSOURCES=./libsrc/Backup/BackupLib.cpp \
./libsrc/Backup/BackupBase.cpp \
./libsrc/Backup/TransferManager.cpp

LIBOBJECTS:=$(LIBSOURCES:.cpp=.o)

INCLUDE= -I /usr/include/libxml2/ -I ./System/ -I ./SubSystem/Queue/ -I ./System/Threads/ -I ./ -I

./SubSystem/DB/ -I ./Controller/ -I ./SubSystem/Watcher/

MYDEFINE=-D__LINUX__ -D__cplusplus -D__CLEARCACHE__

LIBFLAG=-shared -Wl

LDFLAGS=-ldl -lpthread -lsqlite3 -lcrypto -lssl -lxml2 -L ./lib/ -lBackupLib

LDLIBFLAGS=-ldl -lpthread -lsqlite3 -lcrypto -lssl -lxml2

all:    $(LIBSOURCES) $(LIBCOMPBKUP)

$(LIBCOMPBKUP): $(LIBOBJECTS)
    $(CC) $(CFLAGS) $(LIBOBJECTS) $(INCLUDE) $(MYDEFINE) -I ./libsrc/Backup/ -o $@

.cpp.o:
    $(CC) $(CFLAGS) $(INCLUDE) $(MYDEFINE) -I ./libsrc/Backup/ ./$< -c -o ./$@

make all cmd的输出是make:all的所有操作都不做

最佳答案

我看不到LIBCOMPBKUP的定义。
因此,all目标扩展到:

all:  ./libsrc/Backup/BackupLib.cpp ./libsrc/Backup/BackupBase.cpp ./libsrc/Backup/TransferManager.cpp

而且make正确地得出结论:没有什么事可做。
你的all目标应该仅仅依赖于$(LIBCOMPBKUP)(一旦你正确定义了它),事情应该从那里开始。
你需要这样一条线:
LIBCOMPBKUP = BackupLib.so

或者类似,这样您构建$(LIBCOMPBKUP)的规则就有了一些意义。

关于c++ - 多个文件的makefile不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20652776/

10-16 20:40