Я пытаюсь создать make-файл с несколькими целями. Раньше я делал простые файлы make, но для нескольких мне не хватает некоторых знаний.
Makefile, который я пытаюсь создать, предназначен для:
Пока что у меня есть:
all:Calendar
Calendar:Calendar.o Date.o Time.o
g++ -std=c++11 Calendar.o Date.o Time.o -o Calendar
Calendar.o:Calendar.cpp Date.h Time.h
g++ -std=c++11 -cpp Calendar.cpp
Date.o:Date.cpp Date.h
g++ -std=c++11 -c Date.cpp
Time.o:Time.cpp Time.h
g++ -std=c++11 -c Time.cpp
clean:
rm -rf *.o
Во время выполнения make я получил несколько ошибок, которые, скорее всего, относятся к make-файлу, это следующие ошибки:
make
g++ -std=c++11 -cpp Calendar.cpp
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /tmp/ccMkIxkk.o: in function `main':
Calendar.cpp:(.text+0x50): undefined reference to `Time::Time()'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: Calendar.cpp:(.text+0x76): undefined reference to `Date::Date()'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: Calendar.cpp:(.text+0x14d): undefined reference to `Time::setHour(int)'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: Calendar.cpp:(.text+0x178): undefined reference to `Time::setMinute(int)'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: Calendar.cpp:(.text+0x1a3): undefined reference to `Time::setSecond(int)'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: Calendar.cpp:(.text+0x1d7): undefined reference to `Time::print()'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: Calendar.cpp:(.text+0x21a): undefined reference to `Time::print12()'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: Calendar.cpp:(.text+0x307): undefined reference to `Date::setMonth(int)'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: Calendar.cpp:(.text+0x332): undefined reference to `Date::setYear(int)'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: Calendar.cpp:(.text+0x35d): undefined reference to `Date::setDay(int)'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: Calendar.cpp:(.text+0x391): undefined reference to `Date::printD()'
collect2: error: ld returned 1 exit status
make: *** [Makefile:5: Calendar.o] Error 1
Вы забыли добавить
-c
при компиляцииCalendar.cpp
для создания объекта, а не исполняемого файла.