"配方在第一个目标之前开始"自创创建open wrt包的makefile错误

时间:2018-02-07 15:42:56

标签: openwrt

我正在尝试创建一个名为' azure'的自己的Open WRT包。到目前为止,我只在package/utils/azure目录中创建了一个Makefile。当我尝试在Open WRT根目录中使用make构建程序包时,将创建一个dump.txt,其中包含:
Makefile:44: *** recipe commences before first target. Stop.

我的Makefile:

include $(TOPDIR)/rules.mk

PKG_NAME:=azure
PKG_VERSION:=1.0
PKG_RELEASE:=1

PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=<URL TO MY GIT REPO>
PKG_SOURCE_VERSION:=<COMMIT HASH>

HOST_BUILD_DEPENDS:=curl/host
PKG_BUILD_DEPENDS:=curl/host
include $(INCLUDE_DIR)/host-build.mk

CONFIGURE_ARGS += --recursive

include $(INCLUDE_DIR)/package.mk

define Package/azure
    SECTION:=utils
    CATEGORY:=Network
    DEPENDS:+=curl
    TITLE:=<MY TITLE>
endef

define Package/azure/description
 <DESCRIPTION>
endef

# Use CMake for building the git repo.
define Build/Compile
    #!/bin/sh
    mkdir $(PKG_BUILD_DIR)/build
    pushd $(PKG_BUILD_DIR)/build
    cmake ..
    make
    popd
endef

define Package/azure/install
    $(INSTALL_DIR) $(1)/usr/bin
    $(INSTALL_BIN) $(PKG_BUILD_DIR)/azure $(1)/usr/bin/azure
endef

$(eval $(call BuildPackage,azure)) # <-- Line 44, the line that generates the error.

我认为它与this有关。由于我使用Open WRT并没有真正按照它的意图使用,我不知道如何正确地重写代码。有人可以帮我吗?非常感谢提前:))

1 个答案:

答案 0 :(得分:0)

找到解决我问题的方法!

出现了一些问题:

  1. curllibcurl之间存在差异。应该使用libcurl代替。
  2. PKG_BUILD_DIR未定义。更容易提前获取源文件,而不是在Makefile中使用git。在克隆或复制源文件时,很清楚PKG_BUILD_DIR将是什么。
  3. 我完全重写了Makefile并添加了define Build/Configure部分。我假设应该在本节中定义(交叉)编译和链接的工具,以便开始编译过程。例如,CXX编译器的定义是:

    CXX="$(TOOLCHAIN_DIR)/bin/$(TARGET_CROSS)g++"

    另一个好的做法是使用绝对路径定义目录,而不是使用相对路径。