LINUX.ORG.RU

makefile undefined reference to vtable

 ,


0

1

Всем привет, сначала без makefile обходился, через bash делал скрипты для компиляции: Скрипт

Но компиляция стала занимать слишком много времени, у меня на компьютере где-то пол минут, очень раздражает. Решил попробовать сделать makefile, вроде все работает, shared библиотеки компилируются, а вот сам проект нет, выдает две ошибки:

core.o: In function `UIEdit::UIEdit(UIManager*)':
src/core/core.cpp:(.text._ZN6UIEditC2EP9UIManager[_ZN6UIEditC2EP9UIManager]+0x2f): undefined reference to `vtable for UIEdit'
core.o: In function `UIButton::UIButton(UIManager*)':
src/core/core.cpp:(.text._ZN8UIButtonC2EP9UIManager[_ZN8UIButtonC2EP9UIManager]+0x2f): undefined reference to `vtable for UIButton'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [e2dit] Ошибка 1
При помощи bash скрипта все компилировалось без проблем, в чем дело понять не могу, вроде бы конструкторы нельзя делать виртуальнымы...
Собственно сам makefile

★★★
Ответ на: комментарий от EXL

Разве??? QBS говорили что именно сам будет дергать тулзы для компиляции и линковки, не генеря всякие мякофайлы и прочие slnы...

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от EXL

И что же, dialog.cpp инклюдит только dialog.h, и ни один из этих двух файлов не инклюдит других файлов из проекта? Ведь если инклюдит, то надо и их как зависимости прописать. Поэтому мейк с c++ можно использовать только со всякой магией, автоматически определяющей зависимости от заголовочных файлов.

hlebushek ★★
()
Ответ на: комментарий от post-factum

Вроде осилил cmake почти, но у меня в проекте есть 2 библиотеки, которые я перекомпилировал в C++14, и никак не могу их слинковать, одна boost другая SFML 2.2
SFML он автоматом находит который я устанавливал через Software manager, а буст и вовсе не находит :( как правильно указать директории где у меня скомпилированные уже под C++14 библиотеки?

Int64 ★★★
() автор топика
Ответ на: комментарий от post-factum

Спасибо, читал, оказалось это SFML что-то глючит, boost без проблем смог подключить, а SFML не хочет подключаться.

Int64 ★★★
() автор топика
Ответ на: комментарий от pon4ik

Однако, лично я таки жду тулзу, с человечьим языком вместо их самопальщины.

Для своих проектов юзаю scons, устраивает... Жду когда на python3 перейдут :-)

FIL ★★★★
()
Ответ на: комментарий от LongLiveUbuntu

Для его случая тулсы идеальны.

Нет такого проекта, для которого автокрэп был был идеален.

Stil ★★★★★
()
Ответ на: комментарий от FIL

scons - это не мета сборщик, соответственно он довольно тяжко интегрируется в различные среды разработки.

И врят ли делает инкрементальную сборку эффективней того же ninja, а может и gmake (хотя без замеров говорить нечего, но тот же ninja работает в ~100 раз быстрее на моём проекте 100ms против 10s на построении дерева зависимостей. Особенно это заметно когда поменялось например 3 файлика из 3ех разных и мелких компонентов - тогда времени, которое уходит у gmake только на понимание чего надо пересобирать, ninja + gcc + ld хватает что бы уже всё собрать.

Тот же cmake, несмотря на его недостатки, вполне себе позволяет использовать эти и другие тулзы.

pon4ik ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.