【问题标题】:Checking file size in makefile, stopping if file is too short检查makefile中的文件大小,如果文件太短则停止
【发布时间】:2012-05-20 11:57:26
【问题描述】:

有没有办法检查特定文件的大小是否小于某个常数?我假设 makefile 中的大小有关,并且想确保如果我的假设没有得到满足,我会得到一个错误。类似于 assert 的东西,但在 makefile 中。

if filesize(file) > C then error
else continue compilation

【问题讨论】:

  • 您使用的是什么品牌/版本的品牌?我不知道这有什么标准,所以你可能不得不掏空 - 什么操作系统?

标签: compilation makefile


【解决方案1】:

把它放在你的规则中,在编译之前的某个地方:

 test -n "$$(find filename -a -size +NNNc)"

其中filename 是文件名,NNN 是八位字节的大小。这将返回 false 并在大小小于或等于 NNN 时停止 make

【讨论】:

    【解决方案2】:

    我的方法可能不是最漂亮的解决方案,但它对我有用:)

    CHECKFILE = \
        if [ ! -f "file" ]; then \
            echo "file does not exist" ; exit 1 ; \
        fi; \
        FSIZE=$$(du -b "file" | cut -f 1) ; \
        if [ $$FSIZE -lt 100000 ]; then \
            echo "filesize too small" ; exit 1 ; \
        fi
    
    all:
        @$(CHECKFILE)
    

    【讨论】:

      【解决方案3】:

      我更喜欢这个——如果大于 256 字节则继续,否则停止制作——为了可读性:

      test `wc -c <$<` -gt 256;
      

      在反引号内,文件$&lt; 被定向到wc -c,它返回$&lt; 的大小(以字节为单位)。在反引号计算$&lt; 的大小后,test-gt“大于”运算符一起使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        • 1970-01-01
        • 2013-05-02
        • 1970-01-01
        • 2020-09-28
        • 2018-04-07
        • 1970-01-01
        相关资源
        最近更新 更多