2012-05-20 4 views
4

Есть ли способ проверить, меньше ли размер определенного файла? Я предполагаю вещи о размере в make-файле и хочу убедиться, что я получу ошибку, если мои предположения не будут выполнены. Что-то вроде assert, но в makefile.Проверка размера файла в make-файле, если файл слишком короткий

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

+0

Какой бренд/версия марка вы используете? Я не знаю ничего стандартного для этого, так что вам, вероятно, придется выложить оболочку - какую ОС? – Mat

ответ

3

Поместите это в правило, где-то до компиляции:

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

где filename имя файла и NNN это размер в байтах. Это возвращает false и останавливает make, когда размер меньше или равен NNN.

1

Мой подход к этому, вероятно, не самый прелестный решение, но он работал для меня :)

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) 
0

Я предпочитаю this-- продолжать, если больше 256 байт, в противном случае остановки make-- для удобства чтения :

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

Within кавычки, файл $< направляется в wc -c, который возвращает размер в байтах $<. После того, как обратные сигналы оценивают размер $<, test затем используется с оператором «больше, чем» -gt.

Смежные вопросы