我尝试向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
。
如果有人能帮助我解决这个问题,我将非常感激。
答案 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。