make <package> 意味着新的提取
make <package> implies new Extracting
我用以下两个文件创建了一个 Buidroot 包:
.mk
AVM_VERSION = $(BR2_PACKAGE_AVM_TARGET)-V00.00.01
AVM_SITE_METHOD = git
AVM_SITE = ssh://git@myownserver.com/App/AVM.git
AVM_INSTALL_TARGET = YES
define AVM_BUILD_CMDS
$(TARGET_CC) $(TARGET_CFLAGS) -o $(@D)/AVM $(@D)/avm.c
endef
define AVM_INSTALL_STAGING_CMDS
$(MAKE) DESTDIR=$(STAGING_DIR) -C $(@D) install
endef
define AVM_INSTALL_TARGET_CMDS
$(INSTALL) -D -m 0755 $(@D)/AVM $(TARGET_DIR)/usr/bin/avm
endef
$(eval $(generic-package))
Config.in
config BR2_PACKAGE_AVM
bool "AVM"
help
Application for embedded platform.
config BR2_PACKAGE_AVM_TARGET
string "AVM package target"
depends on BR2_PACKAGE_AVM
help
Define board
我使用上面的.mk文件编译成功了。但是,因为我想将源代码修改为 output/build,所以我注意到以下行为(仅删除 .stamp_built 后):
$ make AVM
>>> AVM v00.00.01 Extracting
...
>>> AVM v00.00.01 Patching
>>> AVM v00.00.01 Configuring
>>> AVM v00.00.01 Building
...
即使没有删除 .stamp,我也获得了新的提取、修补、配置、构建...
怎么了?
编辑:
问题似乎来自 AVM_VERSION 定义。当我按其价值交换 $(BR2_PACKAGE_AVM_TARGET)
时,我得到 make: Nothing to do for « AVM ».
这个名为 $(BR2_PACKAGE_AVM_TARGET) 的变量已被定义到与开发板关联的 defconfig 文件中 BR2_PACKAGE_AVM_TARGET="AVM2.3"
你没有qstrip
BR2_PACKAGE_AVM_TARGET
,所以就make而言,引号是版本的一部分。 make 查找文件 output/build/AVM-"AVM2.3"-V00.00.01/.stamp_extracted
但该文件不存在,因此将再次执行提取步骤。所有其他步骤相同。请注意,下载步骤被跳过,因为 tarball 存在于 dl 目录中。
要修复,请使用
AVM_VERSION = $(call qstrip, $(BR2_PACKAGE_AVM_TARGET))-V00.00.01
我用以下两个文件创建了一个 Buidroot 包:
.mk
AVM_VERSION = $(BR2_PACKAGE_AVM_TARGET)-V00.00.01
AVM_SITE_METHOD = git
AVM_SITE = ssh://git@myownserver.com/App/AVM.git
AVM_INSTALL_TARGET = YES
define AVM_BUILD_CMDS
$(TARGET_CC) $(TARGET_CFLAGS) -o $(@D)/AVM $(@D)/avm.c
endef
define AVM_INSTALL_STAGING_CMDS
$(MAKE) DESTDIR=$(STAGING_DIR) -C $(@D) install
endef
define AVM_INSTALL_TARGET_CMDS
$(INSTALL) -D -m 0755 $(@D)/AVM $(TARGET_DIR)/usr/bin/avm
endef
$(eval $(generic-package))
Config.in
config BR2_PACKAGE_AVM
bool "AVM"
help
Application for embedded platform.
config BR2_PACKAGE_AVM_TARGET
string "AVM package target"
depends on BR2_PACKAGE_AVM
help
Define board
我使用上面的.mk文件编译成功了。但是,因为我想将源代码修改为 output/build,所以我注意到以下行为(仅删除 .stamp_built 后):
$ make AVM
>>> AVM v00.00.01 Extracting
...
>>> AVM v00.00.01 Patching
>>> AVM v00.00.01 Configuring
>>> AVM v00.00.01 Building
...
即使没有删除 .stamp,我也获得了新的提取、修补、配置、构建...
怎么了?
编辑:
问题似乎来自 AVM_VERSION 定义。当我按其价值交换 $(BR2_PACKAGE_AVM_TARGET)
时,我得到 make: Nothing to do for « AVM ».
这个名为 $(BR2_PACKAGE_AVM_TARGET) 的变量已被定义到与开发板关联的 defconfig 文件中 BR2_PACKAGE_AVM_TARGET="AVM2.3"
你没有qstrip
BR2_PACKAGE_AVM_TARGET
,所以就make而言,引号是版本的一部分。 make 查找文件 output/build/AVM-"AVM2.3"-V00.00.01/.stamp_extracted
但该文件不存在,因此将再次执行提取步骤。所有其他步骤相同。请注意,下载步骤被跳过,因为 tarball 存在于 dl 目录中。
要修复,请使用
AVM_VERSION = $(call qstrip, $(BR2_PACKAGE_AVM_TARGET))-V00.00.01