2014-11-18 2 views
0

Я пытаюсь добавить пакет Qmake для buildroot, пакет называется DummyPgm. Мне удалось получить его в меню и выбрать его, но во время процесса сборки Makefile не найден. Я получаю сообщение об ошибке сказав:Добавить пакет Qmake в buildroot

>>> dummypgm 0.1.0 Extracting 
gzip -d -c /home/kellyj/BuildSystem/buildroot/dl/DummyPgm-0.1.0.tar.gz | tar --strip-components=1 -C /home/kellyj/BuildSystem/buildroot/output/build/dummypgm-0.1.0 -xf - 

>>> dummypgm 0.1.0 Patching 

>>> dummypgm 0.1.0 Configuring 
/home/kellyj/BuildSystem/buildroot/output/host/usr/bin/qmake -o Makefile -v /home/kellyj/BuildSystem/buildroot/output/build/dummypgm-0.1.0/MsgDisplay.pro 
QMake version 3.0 
Using Qt version 5.3.1 in /home/kellyj/BuildSystem/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib 

>>> dummypgm 0.1.0 Building 
/usr/bin/make -j3 -C /home/kellyj/BuildSystem/buildroot/output/build/dummypgm-0.1.0 
make[1]: Entering directory `/home/kellyj/BuildSystem/buildroot/output/build/dummypgm-0.1.0' 
make[1]: *** No targets specified and no makefile found. Stop. 
make[1]: Leaving directory `/home/kellyj/BuildSystem/buildroot/output/build/dummypgm-0.1.0' 
make: *** [/home/kellyj/BuildSystem/buildroot/output/build/dummypgm-0.1.0/.stamp_built] Error 2 

Мой .mk файл содержит следующее:

DUMMYPGM_VERSION = 0.1.0 
DUMMYPGM_SOURCE = DummyPgm-$(DUMMYPGM_VERSION).tar.gz 
DUMMYPGM_INSTALL_STAGING = YES 
DUMMYPGM_INSTALL_TARGET = YES 

define DUMMYPGM_CONFIGURE_CMDS 
    $(HOST_DIR)/usr/bin/qmake -o Makefile -v $(@D)/MsgDisplay.pro 
endef 

define DUMMYPGM_BUILD_CMDS 
    $(MAKE) -C $(@D) 
endef 

define DUMMYPGM_INSTALL_TARGET_CMDS 
    install -D -m 0755 $(@D) 
$(TARGET_DIR)/usr/bin/MsgDisplay 
endef 

$(eval $(generic-package)) 

Кажется, что Makefile никогда не создается, или, по крайней мере, что она создана в неправильном месте. Каталог output/build/dummypgm-0.1.0 содержит следующие файлы:

MsgDisplay.pri MsgDisplay.pro MsgDisplay.pro.user MsgHandler.cpp MsgHandler.h MsgServer.cpp MsgServer.h Tcp Tools main.cpp 

так MsgDisplay.pro присутствует.

Я попытался выполнить команду /home/kellyj/BuildSystem/buildroot/output/host/usr/bin/qmake -o Makefile -v /home/kellyj/BuildSystem/buildroot/output/build/dummypgm-0.1.0/MsgDisplay.pro вручную в моей домашней области, и я не вижу сообщения об ошибке, но не создается Makefile.

Если кто-то может помочь мне понять это, я был бы чрезвычайно благодарен.

+0

Не имеете большого опыта работы с QMake, но если это ваш собственный пакет, вы можете попробовать CMake. До сих пор никаких проблем, по крайней мере, с Qt4 и BR. – yegorich

+0

К сожалению, это не мой пакет. Я пытаюсь добавить чужой пакет в buildroot. Мне не разрешен доступ к их исходному коду, и они неохотно переупаковывают его. Сложно ли переупаковка с CMake? Я мог бы сделать еще один выстрел, чтобы убедить их, но я пока не видел. – James

+0

CMake обычно хороший инструмент. Но если он не будет переупакован, я бы предложил опубликовать ваш вопрос в [рассылке списка] (http://buildroot.uclibc.org/support.html). – yegorich

ответ

3

Да, эта часть кода не так:

define DUMMYPGM_CONFIGURE_CMDS 
    $(HOST_DIR)/usr/bin/qmake -o Makefile -v $(@D)/MsgDisplay.pro 
endef 

Это может быть не очевидно на первый взгляд, но вы должны понимать, что все команды выполняются в исходном каталоге верхнего уровня Buildroot. Поэтому я подозреваю, что вы, скорее всего, замените основной файл Buildroot Makefile, вместо того, чтобы создавать Makefile в output/build/dummypgm-0.1.0, как вы ожидали.

Вы должны поэтому сделать, как это делается в пакете QWT в Buildroot (см пакет/QWT/qwt.mk):

define DUMMYPGM_CONFIGURE_CMDS 
    (cd $(@D); $(TARGET_MAKE_ENV) $(QT_QMAKE)) 
endef 

Это пойдет на выход/строить/dummypgm-0.1.0 (т.е. $(@D)) и будет вызывать qmake оттуда. QT_QMAKE - переменная, предоставленная Buildroot, чтобы другие пакеты могли вызвать qmake с соответствующими аргументами.

Смежные вопросы