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

 
 
 
Reply to this topicStart new topic
> [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
DRUID3
сообщение Oct 22 2009, 16:39
Сообщение #2


山伏
*****

Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294



Насчет "перехватить ошибку" не совсем понял зачем? Во время сборки из make все время обращаться к bash перекодируя туда-сюда этот файл каким-нить скриптом (ищем googl'ом) или встроив этот скрипт прямой в makefile. Добавляете еще одну зависимость и вперед - почва для творчества очерчена smile.gif ...


--------------------
Нас помнят пока мы мешаем другим...
//--------------------------------------------------------
Хороший блатной - мертвый...
//--------------------------------------------------------
Нет старик, это те дроиды которых я ищу...
Go to the top of the page
 
+Quote Post
kurtis
сообщение Oct 22 2009, 18:38
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 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
DRUID3
сообщение Oct 22 2009, 19:36
Сообщение #4


山伏
*****

Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294



biggrin.gif Нужно хранить 2-а файла, один в CP1251 а другой в юникоде. При запуске make свежий в юникоде конвертить с заменой в CP1251. biggrin.gif


--------------------
Нас помнят пока мы мешаем другим...
//--------------------------------------------------------
Хороший блатной - мертвый...
//--------------------------------------------------------
Нет старик, это те дроиды которых я ищу...
Go to the top of the page
 
+Quote Post
ReAl
сообщение Oct 22 2009, 19:48
Сообщение #5


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(DRUID3 @ Oct 22 2009, 22:36) *
biggrin.gif Нужно хранить 2-а файла, один в CP1251 а другой в юникоде. При запуске make свежий в юникоде конвертить с заменой в CP1251. biggrin.gif

+1
Что-то в духе
Код
strings.cpp : strings.txt
         iconv -f UTF8 -t CP1251 $< >$@

и редактировать только strings.txt


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Oct 23 2009, 05:00
Сообщение #6


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

Группа: Свой
Сообщений: 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 - 01:14
Рейтинг@Mail.ru


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