LINUX.ORG.RU

autotools и генерируемые С-файлы

 


0

1

Расскажите, пожалуйста, что и как нужно написать автотулзам, чтоб они (иногда) не перегенерировали генерируемые С-файлы?

Вот у меня есть lexer.l, из него re2c делает lexer.c. На платформе где это будет собираться, допустим, нет re2c, есть С-компилятор. Как быть? Точнее, какие для этого есть лучшие практики? Сейчас в configure.ac так:

AC_CHECK_PROGS([RE2C], [re2c], [:])
if test "$RE2C" = :; then
   AC_MSG_ERROR([This package needs re2c.])
fi

То есть тупо проверяем есть ли re2c и выходим с ошибкой если нет. Нехорошо.

Можно, наверное, таскать сгенерированный файл с собой и если не нашили re2c заменить его на «cp generated/lexer.c .» ? Тогда в какой момент перегенерировать этот generated/lexer.c? Добавлять таргет? Как это вообще принято делать?

Я такое точно видел при сборке какой-то СУБД. Если ./configure не находил bison, то использовал пре-генерированный С-файл. Но это было давно и тогда даже не думал присматриваться.

Напомню, это нужно для автотулз, но если cmake/bjam/кто-то еще умеют такое, наверное тоже интересно было бы посмотреть

Deleted

таскать сгенеренный файл lexer.c с собой, если в процессе выполнения configure в системе будет обнаружен re2с, тогда файлик удалить

Harald ★★★★★
()
Ответ на: комментарий от Harald

Ага. То есть написать что-то типа такого?

if test "$RE2C" = :; then
   AC_MSG_WARN([re2c not found])
else
   rm lexer.c
fi

Это нормальная практика?

Уже задолбался гуглить и смотреть на готовые configure.ac, народ там чего только не пишет

Deleted
()
Ответ на: комментарий от Harald

Проверил, все работает.

Спасибо

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.