LINUX.ORG.RU

distcc компиляция qt-проекта


0

0

Вобщем суть такая: есть часть проекта на qt, она собирается вызывая qmake и make. решил использовать distcc для сборки столкнулся со следующей проблемой. qmake создает Makefile со следующим содержанием:

.cpp.o:

$(CXX) -c -include qt-client $(CXXFLAGS) $(INCPATH) -o $@ $<

где qt-client название директории и часть названия файла проекта (qt-client.pro) соответственно файла qt-client нет.

при компиляции через i686-pc-linux-gnu-g++ -v получается:

/usr/libexec/gcc/i686-pc-linux-gnu/4.1.1/cc1plus -quiet -v -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I. -D_GNU_SOURCE -D_REENTRANT -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -include qt-client QTClient.cpp -quiet -dumpbase QTClient.cpp -march=pentium3 -auxbase-strip QTClient.o -O2 -Wall -W -version -fPIC -o - | /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../../i686-pc-linux-gnu/bin/as -V -Qy -o QTClient.o -

при компиляции через distcc i686-pc-linux-gnu-g++ вываливается ошибка: "cc1plus: error: qt-client: Нет такого файла или каталога ". вывод distcc i686-pc-linux-gnu-g++ -v:

/usr/libexec/gcc/i686-pc-linux-gnu/4.1.1/cc1plus -E -quiet -v -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I. -D_GNU_SOURCE -D_REENTRANT -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -include qt-client QTClient.cpp -march=pentium3 -Wall -W -fPIC -O2

опции и параметры компиляции не меняются (в ручную проверял). как видно с первого взгляда distcc меняет опции передаваемые для cc1plus. Собственно вопрос: как заставить distcc собирать проект? (Теоретически можно воспользоваться sed'ом на Makefile, но это на крайний случай)

★★

ps cat qt-client.pro:

TRANSLATIONS +=
CONFIG += precompile_header
PRECOMPILED_HEADER = PCH_Qt.hpp

HEADERS = QTClient.hpp \
QTQueryWidget.hpp \
QTConnectDialog.hpp
SOURCES = QTClient.cpp \
QTQueryWidget.cpp \
QTConnectDialog.cpp

TEMPLATE = lib
VERSION = 0.2
TARGET +=
DEPENDPATH += .
INCLUDEPATH += ./
QT += network
CONFIG -= release debug

ale ★★
() автор топика

вопрос решен - это был косяк pch в qt: вместо -include PCH_Qt.hpp был -include qt-client.

В итоге сделал симлинк qt-client на PCH_Qt.hpp и все заработало

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

машинка на которой редактирую исходники - pIII - 1000, мозгов - 192 метра. удаленная машинка лишь одна - athlon 64 3400+ (512Mb RAM'а), соеденины через 100-мегабитную сеть.

>быстрее на много?

полное время сборки моего проекта (отдельная часть на qt, а так - в основном плюсы) на p3:

real 3m13.270s

user 1m18.110s

sys 0m8.330s

используя distcc (p3 + amd64):

real 1m59.197s

user 0m39.130s

sys 0m6.780s

ps за что обожаю linux'так за такие вещи: на удаленной машинке 64-битная gentoo, так что distcc на amd64 использует crosscompile toolchain. еще не пробовал mingw кросскомпилять при помощи distcc (но думаю проблем не будет)

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