make <package>意味着新的Extracting

时间:2015-12-02 14:01:34

标签: linux embedded buildroot

我使用以下两个文件创建了一个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文件编译包时成功了。但是,因为我想将源代码修改为输出/构建,所以我注意到以下行为(仅在删除.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,我也会获得一个新的Extracting,Patching,Configuration,Building ...

怎么了?

编辑:

问题似乎来自AVM_VERSION定义。当我按其价值交换$(BR2_PACKAGE_AVM_TARGET)时,我会收到make: Nothing to do for « AVM ».

此变量名为$(BR2_PACKAGE_AVM_TARGET),已定义到与电路板关联的defconfig文件中BR2_PACKAGE_AVM_TARGET="AVM2.3"

1 个答案:

答案 0 :(得分:2)

您没有qstrip BR2_PACKAGE_AVM_TARGET,因此就 make 而言,引号是版本的一部分。 make 查找文件output/build/AVM-"AVM2.3"-V00.00.01/.stamp_extracted,但该文件不存在,因此将再次执行提取步骤。所有其他步骤也是如此。请注意,跳过下载步骤,因为tar目录存在于dl目录中。

要修复,请使用

AVM_VERSION = $(call qstrip, $(BR2_PACKAGE_AVM_TARGET))-V00.00.01