LINUX.ORG.RU

Emacs заголовочные файлы


0

1

Всем здравствуйте. Проблема: Делаю класс в файлах myClass.h и реализацию в myClass.cpp и провожу некоторые действия с классом в main.cpp. в main.cpp сверху добавляю #include «myClass.h». При компиляции в Qt Creator ошибок не выдает, программа работает. А в emacs при компиляции пишет undefined reference ..... т. е. требует явного включения #include «myClass.cpp». В чем может быть проблема? файлы все в одной директории.

а твой myClass.cpp точно компилируется?

seed_stil ★★
()

в консоли сам руками не пробовал? без всяких Qt Creator и прочих емаксов

seed_stil ★★
()

А в emacs при компиляции

В emacs нет собственной системы сборки, так что чем ты собираешь? Прописать в скрипты сборки необходимость линковать с myClass.o не забыл?

kim-roader ★★
()
Ответ на: комментарий от kim-roader

а твой myClass.cpp точно компилируется?

да, запускал прогу уже.

в консоли сам руками не пробовал? без всяких Qt Creator и прочих емаксов

да робит

В emacs нет собственной системы сборки, так что чем ты собираешь? Прописать в скрипты сборки необходимость линковать с myClass.o не забыл?

Что это значит?)) Где об этом можно почитать? И какие инструменты в Emacs тогда используют для ведения больших проектов?

JuST_KoReaN
() автор топика

требует явного включения #include «myClass.cpp»

Быть такого не может! Какие объявления в .cpp файле?
Это точно не линковщик ругается? Выглядит так, как будто ты не определил что-то и где-то его пытаешься вызывать. Возможно, синтаксические ошибки в определении методов класса, или make-проблемы: объектный файл линкуется?
Запусти make в debug режиме, выхлоп на pastebin, ссылку сюда.

kermzyxer
()
Ответ на: комментарий от JuST_KoReaN

И какие инструменты в Emacs тогда используют для ведения больших проектов?

Стандартный набор. Make, CMake, QtMake(или как там его), gcc, g++, binutils, autotools и тд

kermzyxer
()
Ответ на: комментарий от JuST_KoReaN

http://en.wikipedia.org/wiki/Linker_(computing)
Раз возникают такие вопросы, настоятельно советую 2 книги:
http://www.ozon.ru/context/detail/id/2967330/
http://www.ozon.ru/context/detail/id/5144889/
(обе стоят на полке)
Во 2-ой, во введении, оч. популярно объяснено.

kermzyxer
()
Ответ на: комментарий от kermzyxer

И ещё книжку «Bjarne Stroustrup - Programming principles and practice using c++». Там, на сколько я помню, было достаточно подробно расписано всё что может пригодиться.

kim-roader ★★
()
Ответ на: комментарий от kermzyxer

на wiki почитаю сейчас, а книги потом наверное. Я просто еще новичок в в С++. Сейчас только учу ООП. Сборка еще мне не знакома.

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

Кстати вы не знаете где можно купить книги на англ. языке? Ну там Страуструпа или Дейтела и . п. в Москве, выдают поиски только заказы из-за границы

JuST_KoReaN
() автор топика

А в emacs при компиляции пишет undefined reference

т. е. требует явного включения #include «myClass.cpp

А вот и нет, требует линковки с нужным объектником.

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

Можно начать изучать плюсики, работая в какой-нибудь студии. Но это неправильный путь. Лучше сразу ознакомиться с механизмами компиляции и сборки, и, освоив эту тему, начать писать хелловорды (изучать собственно язык). То есть твой подход - правильный. Проблема в том, что emacs ты тоже не знаешь, и разбираться сразу с несколькими концепциями будет сложно.

Советую взять (уже установленный у тебя qmake). Дальше в директории с проектом вызываешь что-то типа qmake -project (можно из emacs: M-x compile C-j qmake -project C-m)

Qmake создаст тебе текстовый .pro файл. Далее читаешь разжёванное руководство qmake и добавляешь в этот проектный файл информацию (подключаешь дополнительные инклюды, либы, выставояешь флаги, настраиваешь компиляцию / сборку под разные платформы и.т.п.). Список сырцов и заголовочников в .pro уже будет. Для хелловорда скорее всего нужно будет только добавить что-то типа

CONFIG -= qt

CONFIG += console

Далее (и в последующие разы) ещё раз вызываешь qmake, но уже без опций, он сделает тебе Makefile. Который уже нужно скормить какому-нибудь сборщику.

Короче, читай маны.

anonymous
()
Ответ на: комментарий от vasily_pupkin

Всё это есть (CEDET), но не нужно, особенно для больших проектов. Есть нормальный grep и контекстное дополнение.

anonymous
()
Ответ на: комментарий от anonymous

В цедете может и есть, только вот он слишком часто парсит какую-то хрень. Греп - посмеялся, контекстное дополнение - где? Мне приходится использовать свой костыль с ede+clang, что бы иметь качественное контекстное дополнение. Но это слишком тормозно.

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

Кстати вы не знаете где можно купить книги на англ. языке? Ну там Страуструпа или Дейтела и . п. в Москве, выдают поиски только заказы из-за границы

ozon.ru позволял заказать книгу на amazon'е: оплата и доставка через них

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