LINUX.ORG.RU

Опции компиляции в QMake


0

0

Есть библиотека, которая компилируется с помощью qmake (qmake ../iris.pro -o iris.pro && qmake iris.pro && make)

Только вот проблема: вываливается с ошибкой:

g++ -c -pipe -O2 -march=i486 -mtune=i686 -fPIC -Wall -W -D_REENTRANT -DIRISNET_STATIC -DIRIS_XMPP_JID_DEPRECATED -DQT_NO_DEBUG -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/lib/qt/mkspecs/linux-g++ -I../../../../src/irisnet/noncore -I/usr/lib/qt/include/QtCore -I/usr/lib/qt/include/QtNetwork -I/usr/lib/qt/include -I../../../../src/jdns -I../../../../src/irisnet/corelib -I../../../../src/irisnet/noncore/cutestuff -I../../../../src/irisnet/noncore/legacy -I. -I. -I../../../../src/irisnet/noncore -I. -o icecomponent.o ../../../../src/irisnet/noncore/icecomponent.cpp
../../../../src/irisnet/noncore/icecomponent.cpp:24:20: error: QtCrypto: Нет такого файла или каталога

Если отдельно запустить g++ с такими параметрами:

g++ -c -pipe -O2 -march=i486 -mtune=i686 -fPIC -Wall -W -D_REENTRANT -DIRISNET_STATIC -DIRIS_XMPP_JID_DEPRECATED -DQT_NO_DEBUG -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/lib/qt/mkspecs/linux-g++ -I../../../../src/irisnet/noncore -I/usr/lib/qt/include/QtCore -I/usr/lib/qt/include/QtNetwork -I/usr/lib/qt/include -I../../../../src/jdns -I../../../../src/irisnet/corelib -I../../../../src/irisnet/noncore/cutestuff -I../../../../src/irisnet/noncore/legacy -I. -I. -I../../../../src/irisnet/noncore -I. -o icecomponent.o ../../../../src/irisnet/noncore/icecomponent.cpp -I../../../../../qca-2.0.2/include/QtCrypto


то всё проходит отлично. Внимание вопрос: как можно автоматически добавить опцию -I../../../../../qca-2.0.2/include/QtCrypto к g++?

★★

> автоматически

Проще всего - добавить в pro-файл: INCLUDEPATH += /path/to/QtCrypto

Dendy ★★★★★ ()

> qmake -DINCLUDEPATH=../../../../../qca-2.0.2/include/QtCrypto ?

Выводит листинг команд для QMake

Проще всего - добавить в pro-файл: INCLUDEPATH += /path/to/QtCrypto

Уже попробовал но результат нулевой

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

Вообще, добавление директивы INCLUDEPATH в проект всегда помогало. Но тут, видимо, какая-то сложная структура проекта. Сейчас непсоредственно в Makefile добавляю, но, думаю, можно и в iris.pro прописать

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

>> Проще всего - добавить в pro-файл: INCLUDEPATH += /path/to/QtCrypto

Уже попробовал но результат нулевой


Проверьте какой путь попал в Makefile. Судя по всему вы дописали путь относительно директории сборки, а нужно относительно директории с pro-файлом.

Dendy ★★★★★ ()

QtCrypto - это QCA и добавляется он так: config += crypto

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

> Проверьте какой путь попал в Makefile. Судя по всему вы дописали путь относительно директории сборки, а нужно относительно директории с pro-файлом.

Да нет, я прописал абсолютный... А в мэйкфайл он, по-моему, не попал, так как для компиляции выполняет такую команду:

g++ -c -pipe -O2 -march=i486 -mtune=i686 -fPIC -Wall -W -D_REENTRANT -DIRISNET_STATIC -DIRIS_XMPP_JID_DEPRECATED -DQT_NO_DEBUG -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/lib/qt/mkspecs/linux-g++ -I../../../../src/irisnet/noncore -I/usr/lib/qt/include/QtCore -I/usr/lib/qt/include/QtNetwork -I/usr/lib/qt/include -I../../../../src/jdns -I../../../../src/irisnet/corelib -I../../../../src/irisnet/noncore/cutestuff -I../../../../src/irisnet/noncore/legacy -I. -I. -I../../../../src/irisnet/noncore -I. -o httpconnect.o ../../../../src/irisnet/noncore/cutestuff/httpconnect.cpp


Вот сам проект:

TEMPLATE = subdirs

IRIS_BASE = $$PWD

#INCLUDEPATH += /home/sabo/Documents/Projects/vkm/qca-2.0.2/include/QtCrypto
INCLUDEPATH += /home/sabo/Documents/Projects/vkm/qca-2.0.2/include/QtCrypto

include(conf.pri)
windows:include(conf_win.pri)

include(common.pri)

# do we have a reason to enter the src dir?
appledns:!appledns_bundle:CONFIG *= build_src
!irisnetcore_bundle:CONFIG *= build_src
!iris_bundle:CONFIG *= build_src

sub_src.subdir = src
sub_tools.subdir = tools
sub_tools.depends = sub_src

build_src:SUBDIRS += sub_src

!no_tests:SUBDIRS += sub_tools

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

В QMake, в отличии от CMake, отсутствует наследование переменных сверху-вниз, нужно добавлять INCLUDEPATH в соответствующий pro-файл внутри директорий src или tools.

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

> В QMake, в отличии от CMake, отсутствует наследование переменных сверху-вниз, нужно добавлять INCLUDEPATH в соответствующий pro-файл внутри директорий src или tools.

Ясно, спасибо за пояснение!

А, может быть, возможно прописать инклюдепатч в сгенерированный QMake'ом Makefile?

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

> А, может быть, возможно прописать инклюдепатч в сгенерированный QMake'ом Makefile?

Если вам нужно это сделать один раз и забыть про сборку навеки - тогда можно. Если же нужно будет делать это повторно - допишите в pro/pri файл. Вообще поищите где-то там внутри crypto.prf (как-то так), по-хорошему этот INCLUDEPATH должен быть внутри него.

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