реклама на сайте
подробности

 
 
> [GNU Make] Сделать какие-то действия, если make вернул ошибку
kurtis
сообщение Oct 22 2009, 16:09
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



Здравствуйте!

Есть такой makefile (основан на примерах из scmRTOS в ветке для avr-gcc)
Цитата
all: begin $(TRGPGM) dump printok

begin:
echo ======== Beginning of project "$(TRG)" processing ; $(CC) --version ;\
mkdir -p $(OBJDIR) $(EXEDIR) $(LSTDIR)
recode utf8..cp1251 $(TEXT_MESSAGE_DIRECTORY)/strings.cpp ........ (1)

printok: $(TRGELF)
echo ======== All OK, project size: ; $(ELFSIZE) $<
recode -f cp1251..utf8 $(TEXT_MESSAGE_DIRECTORY)/strings.cpp ........ (2)
Суть такая, есть файл strings.cpp где хранятся строки выводимые на экран ЖКИ (на кириллице). По умолчанию система сделана для вывода строк в кодировке CP1251, у меня же все исходники в кодировке unicode и дежать один файл в "неродной" кодировке мне не хочется, да и не очень это удобно. Для этого, я перед каждой сборкой, перекодирую файл в CP1251 (см. пункт "1"), а в конце обратно перегоняю в удобную для меня кодировку (пункт "2"). Но есть небольшая проблема - если при работе Make возвращает ошибку, то тогда файл не будет обратно преобразован в unicode.

Можно ли как-то средствами утилиты GNU Make "перехватить" ошибку и сделать какие-то действия (выполнить пункт "2")?

Спасибо за внимание! rolleyes.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
kurtis
сообщение Oct 22 2009, 18:38
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



Я может не правильно выразился.
Со скриптом то понятно что проще и быстрее будет. Я думал что может есть какие-то средства внутренние.

Проблема в том что если я собираю цель "all"
Код
all: begin $(TRGPGM) dump printok
то последовательно собирается сначала "begin", потом начинаются компилироваться исходники "$(TRGPGM)", и если здесь происходит ошибка, то Make вываливается в shell и возвращает ошибку. Т.е. до цели "prinkok" он не доходит.
Я думал что может есть способ, указать в makefile какую-то последовательность действий, вызываемую при не успешном выполнении какой-то части задания.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Oct 23 2009, 05:00
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(kurtis @ Oct 22 2009, 22:38) *
Я думал что может есть способ, указать в makefile какую-то последовательность действий, вызываемую при не успешном выполнении какой-то части задания.
Можно.

Код
all:
    -./not_found
    @[ $$? -eq 0 ] && echo Error!!!
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 09:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01352 секунд с 7
ELECTRONIX ©2004-2016