gpt4 book ai didi

c++ - 多个文件的 makefile 不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 09:41:46 25 4
gpt4 key购买 nike

我有多个 cpp 文件。我有一个 make 文件和一个用于编译的 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 的输出是ma​​ke: Nothing to be done for `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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com