Я создал статическую библиотеку, используя базу данных makefile project/database/Makefile, как это
rm -rf libdatabase.a
database.o: database.cpp database.h
g++ -c -o database.o database.cpp
ar rvs libdatabase.a database.o
if [ -f libdatabase.a ];
then
echo "Database-Library Build Success"
cp libdatabase.a ../LIBs/
else
echo "databse-Library Build Failure"
fi
то я собираюсь связать его в главном файле проекта /Main/Makefile, как это
rm -rf testdate
INCPATH = -I../database
LIBPATH = -L../LIBs
testdate:main.o libdatabase.a
g++ -o testdate libdatabase.a main.o
main.o: main.cpp database.h
g++ -c -o main.o main.cpp
но его ошибка бросания вроде: make: * Нет правила для создания target database.h', needed by
main.o'. Стоп.
Плэше мне поможет одна из них. Я новичок в Linux.
У вас есть дополнительная обратная косая черта в вашем файле makefile в конце назначения переменной LIBPATH
. Это приводит к тому, что следующая строка (testdate:...
target) считается частью значения переменной для LIBPATH
. Это, в свою очередь, означает линию рецепта после этого (g++ -o testdate...
) не имеет определенной цели, поэтому вы получаете эту ошибку.
Удалите обратную косую черту:
LIBPATH = -L../LIBs
database.h
как предварительное условие, но make не может найти этот файл. Это существует? Это в каком-то другом каталоге? Make не может угадать, где она находится в вашей файловой системе, поэтому, если вы напишитеdatabase.h
make будет искать в текущем каталоге, а если его там нет, произойдет сбой.