4

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

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

3 回答 3

4

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

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

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

于 2012-05-20T12:11:13.777 回答
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)
于 2013-06-12T15:22:56.090 回答
1

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

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

在反引号内,文件$<被定向到wc -c,它返回以字节为单位的大小$<。在反引号评估 的大小之后$<test然后将其与-gt“大于”运算符一起使用。

于 2015-12-21T23:04:43.280 回答