Makefile 更改openwrt编译包的默认目录src

Makefile 更改openwrt编译包的默认目录src,makefile,package,openwrt,Makefile,Package,Openwrt,我正在为openwrt创建一个包含几个模块的包。 如果结构是: package_name . Makefile<s>.txt</s> . files . src + CMakeLists.txt + Module1 + Module2 + ... + Modulen package\u名称 . Makefile.txt . 文件夹 . src +CMakeLists.txt +模块1 +模块2 + ... +模块化 但是如果我通

我正在为openwrt创建一个包含几个模块的包。 如果结构是:

package_name
. Makefile<s>.txt</s>
. files
. src
    + CMakeLists.txt
    + Module1
    + Module2
    + ...
    + Modulen
package\u名称
. Makefile.txt
. 文件夹
. src
+CMakeLists.txt
+模块1
+模块2
+ ...
+模块化
但是如果我通过modules更改名称src,则会显示错误。我知道搜索src目录的默认结构,但是, 我应该向Makefile.txt添加什么来将默认值src更改为任何其他值


谢谢。

OpenWRt包结构。您的交互测试部分是
将源代码与OpenWrt Makefile捆绑在一起

(恐怕
Makefile
应该是
Makefile
而没有
txt
扩展名。如果您可以发布完整的Makefile,这将很有帮助,但我将尝试不使用它。另外,请指出您使用的OpenWRT版本,答案可能取决于版本)

我在
include/package defaults.mk
中找到了以下[OpenWRT 19.07.1]:

Build/Patch:=$(Build/Patch/Default)
ifneq ($(strip $(PKG_UNPACK)),)
  define Build/Prepare/Default
        $(PKG_UNPACK)
        [ ! -d ./src/ ] || $(CP) ./src/. $(PKG_BUILD_DIR)
        $(Build/Patch)
  endef
endif
对我来说,这意味着你:

  • 在Makefile中定义
    PKG\u UNPACK
    ,如下所示:
    PKG\u UNPACK=$(CP)。/modules/$(PKG\U BUILD\U DIR)
  • 按如下方式覆盖默认的“准备”部分(或复制递归,具体取决于您的结构):


它解决了这个问题。你是对的,Makefile没有.txt。写这个问题是个错误。我阅读了您随附的关于软件包的文档,但找不到解决方案。脚本对我来说非常密集。你选择定义“PKG_解包”还是“重写构建/准备”?我定义了PKG_解包。如果我不知道范围,我不太喜欢override这个词。但我把它作为评论写了下来。
define Build/Prepare
        $(call Build/Prepare/Default)
        $(CP) ./modules/* $(PKG_BUILD_DIR)/
endef