Makefile 为什么Buildroot不为添加到build per过程中的特定于项目的主机包提供make target?

Makefile 为什么Buildroot不为添加到build per过程中的特定于项目的主机包提供make target?,makefile,buildroot,Makefile,Buildroot,这些年来,我经常使用Buildroot,我总是设法找到解决我遇到的障碍的方法。但这件事让我左右为难 我已经将一个源于git的python工具作为主机包添加到针对ARM目标的Buildroot构建中。我已经完成了包/Config.in.host和包/toolname/Config.in.host以及包/toolname/toolname.mk文件的工作。一切看起来都井然有序。我已将该工作与add_new_package.wizard的输出进行了比较 新选项确实出现在菜单配置中 它不能作为make目

这些年来,我经常使用Buildroot,我总是设法找到解决我遇到的障碍的方法。但这件事让我左右为难

我已经将一个源于git的python工具作为主机包添加到针对ARM目标的Buildroot构建中。我已经完成了包/Config.in.host和包/toolname/Config.in.host以及包/toolname/toolname.mk文件的工作。一切看起来都井然有序。我已将该工作与add_new_package.wizard的输出进行了比较

新选项确实出现在菜单配置中

它不能作为make目标使用,尽管我确实包含了有效的make目标的目标端包。i、 e.我能跑: 生成目标端包名 这些软件包做得很好

我不能跑: 生成主机端包名,因为我得到错误“无规则生成目标”

因此,肯定有一些我在主机包上做得不对,尽管我显然在目标包上做了正确的事情

一切都指向Buildroot只是忽略我的主机包,而不是将它粘贴到menuconfig中。我在网上搜索了几个小时,没有一篇文章提到有人有同样的问题。我想我错过了一些显而易见的东西

我的问题是-我可以做什么调试,在哪里可以找到阻止Buildroot正确识别我的新包的原因

编辑:我相信我现在理解了部分问题是构建顺序,也许我可以用依赖指令解决一个问题。我的目标包依赖于主机包,它是首先构建的。我曾假设,根据常识,将首先处理主机包,但这显然不是事实

编辑:发布.mk文件

TOOLNAME_VERSION = 2
TOOLNAME_SITE =  $(call github,devname,toolname,$(TOOLNAME_VERSION))
TOOLNAME_SETUP_TYPE = setuptools  
TOOLNAME_LICENSE = GPL-3.0  
TOOLNAME_LICENSE_FILES = LICENSE  

HOST_TOOLNAME_DEPENDENCIES = host-python-library  

$(eval $(host-python-package))  

TOOLNAME = $(HOST_DIR)/usr/bin/toolname  
正如我之前暗示的,它现在运行得很好,所以我知道它的设置基本正确,剩下的问题是make目标丢失。根据Buildroot手册,我应该有一个可用的

我现在发现,缺少make目标实际上使构建依赖于此目标的其他包变得不可能。依赖包的构建现在失败了,因为没有任何规则可以通过toolname包对其进行依赖
TARGET\u PACKAGE\u DEPENDENCIES=toolname

您能发布您的toolname.mk吗?听起来你好像忘了添加$eval$host python包行。

哈利路亚!答案是,生成目标名称不是toolname,而是HostToolName。问题的根本原因是Buildroot文档的第8.12.5节中没有提到这种细微差别。在第17章研究包依赖关系时,我偶然发现了答案,在该章中,它确实确定了该特定情况的正确用法。

邮件列表和IRC频道是解决此类问题的最佳场所。你会在那里找到更好的回复。你的问题也很模糊:你能提供你的Config.in和.mk文件吗?可能会混淆敏感数据?谢谢你的建议。我已经发布了.mk,Config.in.host中真的没有什么有趣的东西。它很简单,包显示在menuconfig中,并且构建正确。现在困扰我的只是制造目标的问题。