Makefile C++(Linux)

311
06 февраля 2018, 09:26

Добрый день возникла проблема с написание Makefile... Суть ее такова, что когда помещаю все в одну зависимость, то тогда все работает исправно, но когда начинаю разделять, то получаю разные ошибки(то ошибки линковки библиотек, то не нахождения методов и классов). Проект состоит из 5 файлов

  • main.cpp
  • PDfDocument.h
  • PDfDocument.cpp
  • XMLWriter.h
  • XMLWriter.cpp.

В main.cpp подключаются PDFDocument и XMLWriter, XMLWriter в свою очередь подключает PDfDocument. Также есть библиотека libpodofo и lintinyxml(она представлена в виде исходников). Вот собственно сам makefile:

CC = g++
CFlAGS = -c -Wall
LIBS =-lpodofo
OBJ= main.o PDFDocument.o tinyxml.o XMLWriter.o
EXE = -o PDFParser
all: main.o PDFDocument.o XMLWriter.o
    $(CC) $(EXE) $(OBJ) $(LIBS)
main.o: PDFDocument.h XMLWriter.h main.cpp
    $(CC) $(CFLAGS) main.cpp $(LIBS)
PDFDocument.o: PDFDocument.cpp PDFDocument.h
    $(CC) $(CFLAGS) PDFDocument.cpp
XMLWriter.o: PDFDocument.h XMLWriter.h XMLWriter.cpp
    $(CC) $(CFLAGS) XMLWriter.cpp

Надеюсь, что кто-нибудь подскажет где проблема или в какую сторону рыть для ее решения... Вот неполный список ошибок, здесь собствевнно не получается прилинковать библиотеку и main не видит конструктора класса из XMLWriter

main.cpp:(.text+0x44): undefined reference to `XMLWriter::XMLWriter()'
main.cpp:(.text+0x130): undefined reference to `XMLWriter::write(PDFDocument&)'
main.cpp:(.text+0x19d): undefined reference to `XMLWriter::~XMLWriter()'
main.cpp:(.text+0x27b): undefined reference to `XMLWriter::~XMLWriter()'
/tmp/ccKo7fq3.o: In function `__static_initialization_and_destruction_0(int, int)':
main.cpp:(.text+0x394): undefined reference to `PoDoFo::PdfRect::PdfRect(double, double, double, double)'
main.cpp:(.text+0x3ce): undefined reference to `PoDoFo::PdfFontMetricsBase14::PdfFontMetricsBase14(char const*, PoDoFo::PODOFO_CharData const*, bool, short, short, unsigned short, unsigned short, PoDoFo::PdfRect const&)'
main.cpp:(.text+0x41e): undefined reference to `PoDoFo::PdfRect::PdfRect(double, double, double, double)'
Answer 1

В CFlAGS в начале файла использована маленькая l. В результате CFLAGS не выставлено, компиляция main.cpp идет без флага -c и падает из-за ошибок линковки.

READ ALSO
cannot resolve method 'findViewById(int)'

cannot resolve method 'findViewById(int)'

Не могу понять в чем ошибка

437
Как отобразить pdf файл в jsp?

Как отобразить pdf файл в jsp?

Делаю учебный проект - Онлайн-библиотекуНадо как-то отобразить pdf из БД на странице

204
Стрим видео с android на сервер

Стрим видео с android на сервер

Есть VDS сервер, есть androidКак можно с android'а стримить видео с камеры на сервер? До этого видел лишь реализацию IP камеры на андроид, но это прям...

209
Что не так с порядком добавления элементов в GridPane? (JavaFX)

Что не так с порядком добавления элементов в GridPane? (JavaFX)

ЗдравствуйтеЕсть метод, генерирующий аналог таблицы с использованием GridPane:

247