我正在尝试创建一个名为' 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并没有真正按照它的意图使用,我不知道如何正确地重写代码。有人可以帮我吗?非常感谢提前:))
答案 0 :(得分:0)
找到解决我问题的方法!
出现了一些问题:
curl
和libcurl
之间存在差异。应该使用libcurl
代替。PKG_BUILD_DIR
未定义。更容易提前获取源文件,而不是在Makefile中使用git。在克隆或复制源文件时,很清楚PKG_BUILD_DIR
将是什么。我完全重写了Makefile并添加了define Build/Configure
部分。我假设应该在本节中定义(交叉)编译和链接的工具,以便开始编译过程。例如,CXX编译器的定义是:
CXX="$(TOOLCHAIN_DIR)/bin/$(TARGET_CROSS)g++"
另一个好的做法是使用绝对路径定义目录,而不是使用相对路径。