LINUX.ORG.RU

Получить путь к хидерам библиотеки в autotools

 , , ,


1

1

Привет всем. Написал маленький тестовый пример на Qt:

#include <QtCore/QDebug>

int main(int argc, char** argv)
{
        qDebug() << "Hello, Qt!";
        return 0;
}

Содержимое Makefile.am таково (нагуглил про CFLAGS на stackoverflow):

bin_PROGRAMS = hello
hello_CFLAGS = $(DEPS_CFLAGS)
hello_SOURCES = src/main.cpp
hello_LDFLAGS = $(DEPS_LIBS)

Тем не менее запуск make выдает вот это:

g++ -DHAVE_CONFIG_H -I.     -g -O2 -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o `test -f 'src/main.cpp' || echo './'`src/main.cpp
src/main.cpp:1:25: фатальная ошибка: QtCore/QDebug: Нет такого файла или каталога
компиляция прервана.
make[1]: *** [main.o] Ошибка 1
make[1]: Выход из каталога `/home/den/test'
make: *** [all] Ошибка 2

С другой стороны pkg-config выдает то, что мне надо, как заставить его взаимодействовать с automake?

Всем спасибо.

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

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

Не нужен.

Есть цель научиться собирать свои пакеты, вообще любые. А для этого желательно иметь проект с поддержкой PREFIX, что естественно получается в случае autotools.

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

А для этого желательно иметь проект с поддержкой PREFIX, что естественно получается в случае autotools.

почему не cmake?

узнать все, что тебе нужно можно так:

$ qmake -query
QT_INSTALL_PREFIX:/usr
QT_INSTALL_DATA:/usr/share/qt4
QT_INSTALL_DOCS:/usr/share/qt4/doc
QT_INSTALL_HEADERS:/usr/include/qt4
QT_INSTALL_LIBS:/usr/lib/i386-linux-gnu
QT_INSTALL_BINS:/usr/bin
QT_INSTALL_PLUGINS:/usr/lib/i386-linux-gnu/qt4/plugins
QT_INSTALL_IMPORTS:/usr/lib/qt4/imports
QT_INSTALL_TRANSLATIONS:/usr/share/qt4/translations
QT_INSTALL_CONFIGURATION:/etc/xdg
QT_INSTALL_EXAMPLES:/usr/lib/qt4/examples
QT_INSTALL_DEMOS:/usr/lib/qt4/demos
QMAKE_MKSPECS:/usr/share/qt4/mkspecs
QMAKE_VERSION:2.01a
QT_VERSION:4.8.1

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

С другой стороны pkg-config выдает то, что мне надо, как заставить его взаимодействовать с automake?

не дочитал до конца :)

Stil ★★★★★
()

Первые же запросы в гугле...

http://qtnode.net/wiki/Qt_with_autotools http://www.gnu.org/software/autoconf-archive/ax_have_qt.html

Опять же, в configure.ac можно использовать pkg-config функции, не помню точно как они называются (PKG_CHECK...). Опять же гугл, первые запросы.

alex_custov ★★★★★
()
Последнее исправление: alex_custov (всего исправлений: 1)
Ответ на: комментарий от LongLiveUbuntu

Кто запрещает реализовать префикс в qmake? (Спокойно починил qmake для проекта transmission-qt, патч не применили в svn только потому что тормозит человек делающий вендопорт своей не нужной кросконпеляцией). А так да cmake прекрасно умеет префикс из коробки.

bhfq ★★★★★
()
Ответ на: комментарий от anonymous
CXXFLAGS = `pkg-config --cxxflags qt4`
LDFLAGS = `pkg-config --libs qt4`

Внезапно пакета qt4 в ubuntu LTS нет, как и опции --cxxflags у pkg-config. Всё-таки лучше сделать запрос к qmake или отказаться от autotools.

quiet_readonly ★★★★
()

Решение найдено.

1. Прописываем в configure.ac макрос AC_SUBST(QT_CORE_CPPFLAGS, $(pkg-config --cflags QtCore)), проверяем наличие нужной библиотеки макросом AC_CHECK_LIB(QtCore, [main])

2.В Makefile.am прописываем строку myprog_CPPFLAGS = @QT_CORE_CPPFLAGS@

Все работает.

В случае сборки не программы, а библиотеки поступаем полностью аналогично.

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