将一个Qmake包添加到buildroot

时间:2014-11-18 16:34:38

标签: embedded-linux qmake buildroot

我尝试向buildroot添加Qmake包,该包名为DummyPgm。我已设法将其输入菜单并选择它,但在构建过程中找不到Makefile。我收到一条错误消息:

>>> 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

如果有人能帮助我解决这个问题,我将非常感激。

1 个答案:

答案 0 :(得分:3)

是的,这部分代码是错误的:

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

初看起来可能并不明显,但您必须意识到所有命令都在Buildroot的顶级源目录中执行。所以我怀疑你最有可能覆盖主Buildroot Makefile,而不是像你期望的那样在output/build/dummypgm-0.1.0中创建Makefile。

因此,您应该在Buildroot的QWT包中完成(参见package / qwt / qwt.mk):

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

这将进入output / build / dummypgm-0.1.0(即$(@D))并从那里调用qmake。 QT_QMAKE是Buildroot提供的一个变量,允许其他包使用正确的参数调用qmake。