Привет.
Решил прикрутить себе автоинкремент билда.
Нашел одно из решений:
http://www.linuxjournal.com/content/add-auto-incrementing-build-number-your-build-process
Но этот минимальный пример из статьи у меня не работает.
Следующие строки
if ! test -f build-number.txt; then echo 0 > build-number.txt; fi
echo $(($(cat build-number.txt) + 1)) > build-number.txt
выполняются, но почему-то не всегда инкрементируют значение в файле.
Объясняю. В шелле они работают как надо. А вот при вставки в make-файл (все точно так же как в статье) происходит непонятность. Если просто выполнять
$ rm bnum.o; make билд не увеличивается. Если в build-number.txt руками записать какое-либо число, билд увеличится, но только один раз.
touch не помогает...
Пожалуйста, кому не влом, воспроизведите пример из статьи и объясните, что не так
У меня такие штуки:
make: GNU Make v. 3.80
компилятор: qcc v. 2.95.3 (QNX 6.3.2)
Оппа! Разобрался, забавно.
Под виндой
echo ставит LF-CR и потом из-за этого шелл не может сложить 1+1. Под linuxom и qnx конечно же обычный LF и там все работает. Видимо косяк шелла под виндой. Вообщем вылечил, добавив опцию -n (что б newline не ставилось).
$(BUILD_NUMBER_FILE): $(OBJECTS)
if ! test -f $(BUILD_NUMBER_FILE); then echo -n 0 > $(BUILD_NUMBER_FILE); fi
echo -n $$(($$(cat $(BUILD_NUMBER_FILE)) + 1)) > $(BUILD_NUMBER_FILE)