make-файл для нескольких файлов не работает

0

У меня есть несколько файлов cpp. У меня есть файл make make для компиляции, но когда я делаю все это, мне нечего делать

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 выполняется : ничего не делать для 'all'

Теги:
makefile

1 ответ

2
Лучший ответ

Я не вижу определения LIBCOMPBKUP.

Таким образом, all цели расширяются до:

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

и make правильно заключает там делать нечего.

Ваше all цель должна только зависеть исключительно от $(LIBCOMPBKUP) (как только вы правильно определить его), и вещи должны начать работать оттуда.

Вам нужна строка:

LIBCOMPBKUP = BackupLib.so

или подобное, так что ваше правило для создания $(LIBCOMPBKUP) имеет некоторое значение.

  • 0
    а это определяется ниже всех ??
  • 0
    @singh: Нет, это не так. Левая часть этого правила расширяется до пустой строки, поскольку переменная LIBCOMPBKUP не определена. Если бы эта переменная была определена и расширена до чего-то, то у make было бы полезное правило.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню